![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Изменение ширины кнопок вместе с шириной строк в StringGrid-е [D7, Win95/98, WinXP]
Dmirty © (2004-07-29 13:08:00)Создаю я кнопочки в stringGrid-е... по две в строке... А как можно сделать, чтобы они изменялись по ширине стобца?
Создаю кнопочки я так...
with TButton.Create(StringGrid1) do
begin
Parent:=StringGrid1;
BoundsRect:=StringGrid1.CellRect(6, StringGrid1.RowCount-2);
Tag:=StringGrid1.RowCount-3; // Для того чтобы знать на какой строке она находится при ее нажатии...
...
end;
with TButton.Create(StringGrid1) do
begin
Parent:=StringGrid1;
BoundsRect:=StringGrid1.CellRect(7, StringGrid1.RowCount-2);
Tag:=StringGrid1.RowCount-3;
end;
В событии MouseUp я пишу...
var
i: integer;
if StringGrid1.Widths[0]<>.. and и т.д. then
begin
for i:=StringGrid1.ControlCount-1 downto 0 do
begin
if ((StringGrid1.Controls[i]) is TButton) then
begin
StringGrid1.Controls[i].BoundsRect:=StringGrid1.CellRect(6, i+1);
end;
end;
Но это только для одной... а как для двух?
Almaz (2004-07-29 19:17:00) [1]
> Dmirty (29.07.04 13:08)
> Создаю я кнопочки в stringGrid-е... по две в строке... А
> как можно сделать, чтобы они изменялись по ширине стобца?
Попробуйте видоизменить свой код следующим образом:
Создание кнопки:
with TButton.Create(StringGrid1) do
begin
Parent:=StringGrid1;
BoundsRect:=StringGrid1.CellRect(6, StringGrid1.RowCount - 2);
// Используйте свойство Tag как хранилище строки и столбца, в котором расположена кнопка.
Tag := MakeLong(6, StringGrid1.RowCount - 2);
end;
Обновление размеров и положения кнопок, в таком случае, будет таким:
var
I: Integer;
begin
for I := 0 to StringGrid1.ControlCount - 1 do
if ((StringGrid1.Controls[i]) is TButton) then
with StringGrid1.Controls[i] do
BoundsRect := StringGrid1.CellRect(LoWord(Tag), HiWord(Tag));
end;
Удачи.
Dmirty (2004-07-29 16:46:00) [2]Я все пытаюсь что-то сделать... что-то не получается... :(
Dmirty (2004-07-29 16:27:00) [3]Можно, но мне так хотелось бы... как у меня только с двумя кнопками...
don-do (2004-07-29 14:04:00) [4]Есть предложение
Создать наследника
перекрыть процедуру CalcSizingState override
например
proc CalcSizingState
begin
inherited CalcSizingState;
//можно объявить отработчик события
end;