| 
| 
 | Вопрос # 1 881/ вопрос открыт / | 
 |  Приветствую, уважаемые эксперты!
 Скажите пжлста почему не отрабатывает мой обработчик нажатия на сделанные в ран-тайме кнопки?
 Приложение:Переключить в обычный режим ...type  TForm1 = class(TForm)    StringGrid2: TStringGrid;    Button2: TButton;    procedure Button2Click(Sender: TObject);  private    { Private declarations }  public    { Public declarations }    myBtn: array[0..9] of TButton;   procedure MyBtnClick(Sender: TObject);  end; var  Form1: TForm1; procedure TForm1.Button2Click(Sender: TObject);var i: Integer;begin  StringGrid2.ColWidths[0] := 120; StringGrid2.RowCount := 10; for i:=0 to StringGrid2.RowCount-1 do  StringGrid2.RowHeights[i] := 40;  for i:=0 to 9 do  begin   myBtn[i] := TButton.Create(Self);   myBtn[i].Name := 'MyBtn'+IntToStr(i+1);   myBtn[i].Caption := '...';   myBtn[i].Parent := StringGrid2;   myBtn[i].Height := 20;   myBtn[i].Width := 20;   myBtn[i].Left := StringGrid2.CellRect(0,i).Left+25;    myBtn[i].Top := StringGrid2.CellRect(0,i).Top+10;   myBtn[i].OnClick := MyBtnClick;  end;end; procedure TForm1.MyBtnClick(Sender: TObject);begin ShowMessage('Hello '+(Sender as TButton).Name);end; 
|  |   Вопрос задал: Muratov Radik (статус: Посетитель)Вопрос отправлен: 8 сентября 2008, 11:20
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 4; последнее сообщение — 8 сентября 2008, 16:08; участников в обсуждении: 3. 
|   | Вадим К (статус: Академик), 8 сентября 2008, 13:09 [#1]:Не будет так работать. Где то я читал, уже не помню, да и на своем опыте убедился. Суть в том, что StringGrid активно обрабатывает все клики мышки и не передаёт их выше (или ниже). Кнопка банально не получает сообщений о нажатии.
 Хотя зачем там кнопки, если нажатие и так можно обработать?
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Muratov Radik (статус: Посетитель), 8 сентября 2008, 13:24 [#2]:Дело в том, что я пытаюсь донести до пользователя, что при нажатии в эту ячейку ему вывалится список значений на выбор. Качать JVCL я не могу. С моим диал-апом он будет 3 дня качаться  Как мне выйти из положения? Чтобы и пользователь наглядно мог понять что к чему, мне не очень мудрено все сделать? |  
|   | Вадим К (статус: Академик), 8 сентября 2008, 13:29 [#3]:3 дня качаться? иногда лучше пожертвовать  и скачать готовые компоненты чем мучиться. Хотя есть идея. А почему бы не взять, и не нарисовать кнопку. Просто нарисовать.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Мережников Андрей (статус: Абитуриент), 8 сентября 2008, 16:08 [#4]:Определить на какой ячейке пользователь нажал кнопку мыши для stringGrid можно следующим образом: procedure TForm1.StringGrid1MouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
 var ACol,ARow:integer;
 begin
 stringgrid1.MouseToCell(x,y,ACol,Arow);
 end;
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |