Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:

Error. Page cannot be displayed. Please contact your service provider for more details. (26)


Как добавить TCheckBox в TStringGrid?

Поиск:
Пример демонстрирует добавление любого количества чекбоксов в StringGrid.
В этом примере необходимо добавить TPanel, а в саму панель включить TstringGrid.
Так же необходимо добавить невидимый TcheckBox на форму. Затем добавьте
5 колонок и 4 строки в объект StringGrid.

Код

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
ShowMessage('There it is!!');  

 
end;

// Заполняем заголовок StringGrid
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0,0] := 'A Simple';  

StringGrid1.Cells[1,0] := 'Way';  

StringGrid1.Cells[2,0] := 'To';  

StringGrid1.Cells[3,0] := 'Do It';  

StringGrid1.Cells[4,0] := 'Check !!';  

AddCheckBoxes; // добавляем чекбоксы...  

 
end;

procedure TForm1.AddCheckBoxes;
var
i: Integer;  

NewCheckBox: TCheckBox;  

 
begin
clean_previus_buffer; // очищаем неиспользуемые чекбоксы...  

for i := 1 to 4 do  

 
begin  

 
StringGrid1.Cells[0,i] := 'a';  

StringGrid1.Cells[1,i] := 'b';  

StringGrid1.Cells[2,i] := 'c';  

StringGrid1.Cells[3,i] := 'd';  

NewCheckBox := TCheckBox.Create(Application);  

NewCheckBox.Width := 0;  

NewCheckBox.Visible := false;  

NewCheckBox.Caption := 'OK';  

NewCheckBox.Color := clWindow;  

NewCheckBox.Tag := i;  

NewCheckBox.OnClick := CheckBox1.OnClick; //Связываем предыдущее событие OnClick  

                                          // с существующим TCheckBox  

NewCheckBox.Parent := Panel1;  

StringGrid1.Objects[4,i] := NewCheckBox;  

StringGrid1.RowCount := i;  

 
end;  

 
set_checkbox_alignment; // расположение чекбоксов в ячейках таблицы...  

 
end;

Procedure TForm1.clean_previus_buffer;
var
NewCheckBox: TCheckBox;  

i: Integer;  

 
begin
for i := 1 to StringGrid1.RowCount do  

 
begin  

 
NewCheckBox := (StringGrid1.Objects[4,i] as TCheckBox);  

if NewCheckBox <> nil then  

 
begin  

 
NewCheckBox.Visible := false;  

StringGrid1.Objects[4,i] := nil;  

 
end;  

 
end;  

 
end;

Procedure TForm1.set_checkbox_alignment;
var
NewCheckBox: TCheckBox;  

Rect: TRect;  

i: Integer;  

 
begin
for i := 1 to StringGrid1.RowCount do  

 
begin  

 
NewCheckBox := (StringGrid1.Objects[4,i] as TCheckBox);  

if NewCheckBox <> nil then  

 
begin  

 
Rect := StringGrid1.CellRect(4,i); // получаем размер ячейки для чекбокса  

NewCheckBox.Left := StringGrid1.Left + Rect.Left+2;  

NewCheckBox.Top := StringGrid1.Top + Rect.Top+2;  

NewCheckBox.Width := Rect.Right - Rect.Left;  

NewCheckBox.Height := Rect.Bottom - Rect.Top;  

NewCheckBox.Visible := True;  

 
end;  

 
end;  

 
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if not (gdFixed in State) then set_checkbox_alignment;  

 
end;
Автор: Joel E. Cant.
Сайт: http://www.sources.ru






Просмотров: 2047

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную