Форум: "Основная";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];
ВнизИзменение ширины кнопок вместе с шириной строк в StringGrid-е Найти похожие ветки
← →
Dmirty (2004-07-29 13:08) [0]Создаю я кнопочки в 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;
Но это только для одной... а как для двух?
← →
don-do (2004-07-29 14:04) [1]Есть предложение
Создать наследника
перекрыть процедуру CalcSizingState override
например
proc CalcSizingState
begin
inherited CalcSizingState;
//можно объявить отработчик события
end;
← →
Dmirty (2004-07-29 16:27) [2]Можно, но мне так хотелось бы... как у меня только с двумя кнопками...
← →
Dmirty (2004-07-29 16:46) [3]Я все пытаюсь что-то сделать... что-то не получается... :(
← →
Almaz © (2004-07-29 19:17) [4]
> 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;
Удачи.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.031 c