Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

CheckBox в StringGrid (2)

Delphi , Компоненты и Классы , TStringGrid и TDrawGrid

CheckBox в StringGrid (2)

Автор: Joel E. Cant.

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

Code:

заголовок 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;


Взято из http://forum.sources.ru

Статья CheckBox в StringGrid (2) раздела Компоненты и Классы TStringGrid и TDrawGrid может быть полезна для разработчиков на Delphi и FreePascal.


Комментарии и вопросы


:: 2011-02-18 13:23:11 :: re:CheckBox в StringGrid (2)

пользователь: Саня.

Спасибо, очень помогли))


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: TStringGrid и TDrawGrid ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100
24.04.2024 08:17:20/0.0009009838104248/0