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

Вниз

Кнопка в StringGrid   Найти похожие ветки 

 
killer ©   (2004-04-29 11:46) [0]

Создал 5 кнопок в ячейках StringGrid-а... А как мне определить на какой строке была нажата кнопка? (событие OnClick почему то не работает... пришлось OnMouseUp использовать...)

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, Buttons;

type
 TForm1 = class(TForm)
   StringGrid1: TStringGrid;
   Button1: TButton;
   BitBtn1: TBitBtn;
   procedure Button1Click(Sender: TObject);
   procedure BitBtn1MouseUp(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
for i:=1 to 4 do
with TBitBtn.Create(StringGrid1) do
 begin
 Parent:=StringGrid1;
 BoundsRect:=StringGrid1.CellRect(4, i);
 OnMouseUp:=BitBtn1MouseUp;
 end;
end;

procedure TForm1.BitBtn1MouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
ShowMessage(StringGrid1.Cells[1, ......]);
end;

end.


 
killer ©   (2004-04-29 13:06) [1]

Удалено модератором
Примечание: Создание пустых сообщений...


 
ЁПРСТ   (2004-04-29 13:55) [2]

Попробуй координаты мыши прогонять через CellRect Стринггрида и проверять попадают ли они внутрь ячейки.


 
pasha_golub ©   (2004-04-29 15:52) [3]

procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
for i:=1 to 4 do
with TBitBtn.Create(StringGrid1) do
begin
Parent:=StringGrid1;
BoundsRect:=StringGrid1.CellRect(4, i);
OnMouseUp:=BitBtn1MouseUp;
end;
end;

А почему кнопка создается при нажатии? В таком коде можно и голову сломать.


 
killer ©   (2004-04-29 22:22) [4]

pasha_golub  Кнопка создается при добавлении новой строки... а строка добавляется по нажатию другой кнопки... :)))


 
killer ©   (2004-04-29 22:23) [5]

ЁПРСТ  Во... а как проверить попадают ли координаты внутрь StringGrid-а?


 
Jack128 ©   (2004-04-29 22:25) [6]

var
i: integer;
begin
for i:=1 to 4 do
with TBitBtn.Create(StringGrid1) do
begin
Parent:=StringGrid1;
BoundsRect:=StringGrid1.CellRect(4, i);
Tag := i;
OnMouseUp:=BitBtn1MouseUp;
end;
end;

procedure TForm1.BitBtn1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
 ShowMessage(StringGrid1.Cells[1 , TComponent(Sender).Tag]);
end;


 
killer ©   (2004-04-29 22:33) [7]

Jack128  Спасибо тебе ОГРОМНОЕ!!! Все работает...


 
killer ©   (2004-04-29 23:55) [8]

а как потом можно переменить свойство Tag у этих кнопок?


 
Jack128 ©   (2004-04-30 00:09) [9]

TComponent(Sender).Tag := <твое значение>;

PS Завтра подьем в 9 утра и пробежка до книжного магазина в обязательном порядке..


 
killer ©   (2004-04-30 00:11) [10]

Jack128 не... мне у всех надо сразу поменять... :)))


 
killer ©   (2004-04-30 00:12) [11]

причем по нажатию той кнопки которая добавляет новую строку и кнопку... дело в том что у меня строки сортируются по алфавитному порядку...


 
killer ©   (2004-04-30 01:24) [12]

все... дошло до меня.... ненадо ничего менять... :)))) Все будет нормально... но... а как удалить теперь кнопочку? Одну хотябы... последнюю... :))) Это если строку удалишь, чтобы кнопочка тоже (последняя) удалялась...


 
Mim1 ©   (2004-04-30 04:13) [13]

У stringgrig есть свойство objects, при создании кнопки нужно запсывать ссылку на нее а при удалении ячейки проверять есть ли в этом "свойствемассиве" ссылка на кнопку, если есть по прибывать кнопку.

ИМХО создавать кнопки для каждой ячейки массива не правильно. Вернее рисовать кнопку в ячейке грида самостоятельно. На королевстве есть статься на эту тему.


 
killer ©   (2004-04-30 11:53) [14]

а как удалять? У меня вылитает ошибка... делаю так:

если удалить последнюю кнопку...

procedure TForm1.Button1Click(Sender: TObject);
begin
StringGrid1.Objects[4,4].Free;
end;



Страницы: 1 вся ветка

Текущий архив: 2004.05.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.048 c
1-1083249482
Berzercer
2004-04-29 18:38
2004.05.16
Можно ли раскрасить строки в Tmemo


14-1083046059
Rule
2004-04-27 10:07
2004.05.16
Электронщики, помогите коллеге программисту :)


6-1080561800
Ламеридзэ
2004-03-29 16:03
2004.05.16
РФЦ


1-1083529948
KEBZ
2004-05-03 00:32
2004.05.16
Text


8-1077809370
Spartak
2004-02-26 18:29
2004.05.16
Смена картинок





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский