Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2014, 14:46   #1
Виктор_Витебск
Пользователь
 
Регистрация: 17.04.2014
Сообщений: 17
Радость StringGrid Delphi

Всем доброго времени суток! Появилось пару вопросов по этому компоненту:
1) изначально ячейка выделена голубым цветом, это никак никак не изменить (совсем не сочетается с зелёным дизайном, вот что обидно)?
2) свойства DefaultColWidth и DefaultRowHeight задают соответственно длину и ширину ячеек, но если мне необходим различный их размер (одна больше, другая меньше) могу ли я это сделать и если да, то как?
3) нашёл коды для очистки данного компонента, только не могу определиться, какой из них предпочтительнее использовать и почему (да и вообще сомневаюсь, будут ли они работать)

"Отдельно требуется осветить вопрос очистки содержимого таблицы StringGrid. Так как таблица StringGrid, в отличие от, например, компонента Memo, не имеет метода для очистки содержимого сразу всех ячеек, то для удаления внесённых в таблицу ранее данных приходится очищать каждую ячейку отдельно. Делается это двумя вложенными циклами for, пробегающими по столбцам и строкам:
Код:
var i, j: Integer;
begin
  with StringGRid1 do
    for i:=1 to RowCount-1 do   //Заголовки строк не трогаем
    for j:=1 to ColCount-1 do   //Заголовки столбцов не трогаем
      Cells[j, i]:='';
end;
Хотя, оказывается, есть метод для очищения содержимого целого столбца или строки:
StringGrid1.Cols[i].Clear; //Очищается столбец с номером i
StringGrid1.Rows[i].Clear; //Очищается строка с номером i
Очевидно, очищение этими методами гораздо быстрее. Однако будут очищены и ячейки фиксированной зоны, содержащие, например, названия строк и столбцов, которые удалять не нужно. Их после очистки нужно просто "написать" заново, на глаз эта манипуляция совершенно незаметна. Для очистки всей таблицы достаточно последовательно очистить только строки или только столбцы:
Код:
var i, j: Integer;
begin
  with StringGRid1 do
    for i:=1 to RowCount-1 do  //Заголовки столбцов не трогаем - цикл от 1
      begin
        Rows[i].Clear;
        Cells[0, i]:="Заголовок строки i";
      end;
end; "
Буду очень признателен за любую помощь, особенно по первым двум вопросам. Спасибо!
Изображения
Тип файла: jpg stringgrid.jpg (34.5 Кб, 53 просмотров)

Последний раз редактировалось Stilet; 18.04.2014 в 21:45.
Виктор_Витебск вне форума Ответить с цитированием
Старый 18.04.2014, 15:15   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
1) изначально ячейка выделена голубым цветом, это никак никак не изменить (совсем не сочетается с зелёным дизайном, вот что обидно)?
OnDrawCell + Canvas
а может вообще "спуститься" до DrawGrid ?
Цитата:
2) свойства DefaultColWidth и DefaultRowHeight задают соответственно длину и ширину ячеек, но если мне необходим различный их размер (одна больше, другая меньше) могу ли я это сделать и если да, то как?
RowHeights ColumnWidths
Цитата:
3) нашёл коды для очистки данного компонента, только не могу определиться, какой из них предпочтительнее использовать и почему (да и вообще сомневаюсь, будут ли они работать)
тот, который удобнее тебе как программисту.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 18.04.2014, 15:17   #3
Виктор_Витебск
Пользователь
 
Регистрация: 17.04.2014
Сообщений: 17
По умолчанию

evg_m, можно подробнее по первому пункту?
Виктор_Витебск вне форума Ответить с цитированием
Старый 18.04.2014, 15:29   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

2.jpg
TcustomDrawGrid базовый класс для всех Grid
3.JPG

на русском ?
вторая книга отсюда
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 18.04.2014 в 15:35.
evg_m вне форума Ответить с цитированием
Старый 18.04.2014, 15:38   #5
Виктор_Витебск
Пользователь
 
Регистрация: 17.04.2014
Сообщений: 17
По умолчанию

Я не понимаю, что Вы предлагаете сделать...
Виктор_Витебск вне форума Ответить с цитированием
Старый 18.04.2014, 15:46   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Он предлагает самому прорисовать на канвас ячейки грида
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.04.2014, 15:55   #7
Виктор_Витебск
Пользователь
 
Регистрация: 17.04.2014
Сообщений: 17
По умолчанию

А как?... Это много кода?
Виктор_Витебск вне форума Ответить с цитированием
Старый 18.04.2014, 16:11   #8
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
А как?... Это много кода?
Код:
celltext:=.....
Canvas.brush.color:=... 
Canvas.Pen.color:=
Canvas.DrawText(celltext);
НО повторенное для всех возможных наборов (цветов фона, текста и прочего чего заблагорассудится) необходимых тебе.
более подробно про Canvas читать в книгах!
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 18.04.2014, 16:49   #9
Виктор_Витебск
Пользователь
 
Регистрация: 17.04.2014
Сообщений: 17
По умолчанию

evg_m, а куда данный код писать?

Последний раз редактировалось Виктор_Витебск; 19.04.2014 в 09:41.
Виктор_Витебск вне форума Ответить с цитированием
Старый 20.04.2014, 12:09   #10
Виктор_Витебск
Пользователь
 
Регистрация: 17.04.2014
Сообщений: 17
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение

RowHeights ColumnWidths
Таких свойств нет... Или это снова код?
Виктор_Витебск вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Stringgrid (Delphi 7) Елена93 Помощь студентам 1 19.11.2012 11:31
Stringgrid delphi Multiman Помощь студентам 5 21.09.2011 19:40
StringGrid в delphi TaYgA Помощь студентам 5 10.01.2010 13:23
Delphi StringGrid kGxDD Помощь студентам 2 19.10.2009 17:15
StringGrid (Delphi) VadEr Помощь студентам 4 09.06.2009 12:49