Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.15;
Скачать: CL | DM;

Вниз

Изменение ширины кнопок вместе с шириной строк в 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.041 c
1-1091180896
fylhtq
2004-07-30 13:48
2004.08.15
Проблема с кириллицей и буфером обмена


3-1090239059
AlexanderSK
2004-07-19 16:10
2004.08.15
dbExpress и InterBase


8-1085583870
Dr.Alex
2004-05-26 19:04
2004.08.15
MPEG TO AVI


8-1084569585
Chupa
2004-05-15 01:19
2004.08.15
DLL Для указания точной частоты звука.


8-1086000556
Dr.Alex
2004-05-31 14:49
2004.08.15
12 - кадр