Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Вниз

Кнопка в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.066 c
1-1083053308
фыва
2004-04-27 12:08
2004.05.16
Stack Overflow


14-1083052292
Slon_SCG
2004-04-27 11:51
2004.05.16
Автоматическое восстановление БД InterBase после сбоя


8-1077726807
Morg
2004-02-25 19:33
2004.05.16
Как можно сделать ScreenShot быстрее


3-1082441873
Dummes
2004-04-20 10:17
2004.05.16
под каким клоном и для какой платформы он создан?


14-1082889813
Nikolay M.
2004-04-25 14:43
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский