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

Вниз

Как сделать, чобы при нажатии кнопки на каждом компоненте Edit   Найти похожие ветки 

 
snake-as ©   (2008-08-28 10:57) [0]

Как сделать, чобы при нажатии кнопки на каждом компоненте Edit на форме вызывалась процедура? Или никак, кроме как прописывать в свойстве каждого компонента нельзя?


 
МистерТ   (2008-08-28 11:03) [1]

в OnClick кнопки пробегаешься по всем дочерним компонентам формы, если компонент является экземпляром класса TEdit вызываешь нужную тебе процедуру.
Все "входящие" вопросы не раз обсуждались на этом форуме.


 
Dennis I. Komarov ©   (2008-08-28 11:03) [2]

ВОзможно не понял, но присвой событию каждого едита одну и туже процедуру...


 
Ega23 ©   (2008-08-28 11:08) [3]

procedure TForm1.OnButton1Click(Sender : TObject);
var
 i : Integer;
begin
 for i:=0 to ComponentCount-1 do
   if (Components[i] is TEdit) then
     TEdit(Components[i]).Твоя_Процедура;
end;


 
{RASkov} ©   (2008-08-28 11:32) [4]

> [0] snake-as ©   (28.08.08 10:57)

Вы о чем думаете когда задаете вопросы?
ЗЫЖ Это не только к автору вопрос...


 
DVM ©   (2008-08-28 11:45) [5]


> при нажатии кнопки на каждом компоненте Edit

я конечно догадываюсь о чем идет речь, но все же, скажите мне как можно кнопку нажать на компоненте Edit?

Кнопку можно нажать на клавиатуре, Edit же знать не знает ни о каких кнопках. Если же имеется в виду компонент TButton, то спрашивается причем здесь Edit?


 
Deltas ©   (2008-08-28 11:55) [6]

Наверное, имеется в виду кнопка мыши. Т.е. клик по компоненту TEdit. Вопрос поставлен, конечно, криво...


 
Vlad Oshin ©   (2008-08-28 12:09) [7]

если

> имеется в виду кнопка мыши


procedure EditClck (Self : TEdit; Sender : TEdit);
begin
 ShowMessage("По мне, "+Self.Name+", кликнули  ");
end;

procedure AssignEditKey (const Edit : TEdit);
var
 Method : TMethod;
begin
 Method.Code := @EditClck;
 Method.Data := Edit;
 Edit.OnClick := TNotifyEvent (Method);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
begin
for i:=0 to ComponentCount-1 do
  if (Components[i] is TEdit) then
      AssignEditKey(TEdit(Components[i]));
end;


а вот как присвоить onKeyPress?


 
Игорь Шевченко ©   (2008-08-28 12:33) [8]


> а вот как присвоить onKeyPress?


также


 
Vlad Oshin ©   (2008-08-28 12:35) [9]

procedure EditClck (Self : TEdit; Sender : TEdit);
begin
 ShowMessage("По мне, "+Self.Name+", кликнули  ");
end;

procedure AssignEditKey (const Edit : TEdit);
var
 Method : TMethod;
begin
 Method.Code := @EditClck;
 Method.Data := Edit;
 Edit.OnKeyPress := TNotifyEvent (Method); [Pascal Error] Unit1.pas(40): E2009 Incompatible types: "Parameter lists differ"
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
begin
for i:=0 to ComponentCount-1 do
  if (Components[i] is TEdit) then
      AssignEditKey(TEdit(Components[i]));
end;
[Pascal Error] Unit1.pas(40): E2009 Incompatible types: "Parameter lists differ"


 
Игорь Шевченко ©   (2008-08-28 12:35) [10]


> [Pascal Error] Unit1.pas(40): E2009 Incompatible types:
> "Parameter lists differ"


Больно слышать


 
Palladin ©   (2008-08-28 12:37) [11]


> Vlad Oshin ©   (28.08.08 12:35) [9]

TWinControl.OnKeyPress + F1

..и Игорь избавится от этой боли в душе :)


 
snake-as ©   (2008-08-28 12:39) [12]

Извините, что ввел глупо поставленным вопросом. Вот что мне нужно:
печатаешь на компоненте Edit тупо текст, нажимаешь, например, Enter и срабатывает процедура. И так в каждом компоненте. Конечно, можно вручную прописать на каждом, но хотелось автоматизировать.  Ega23, я немного не понял, что это значит хотя бы на словах.


 
МистерТ   (2008-08-28 12:43) [13]

тебе уже все ответили, имей уважение к ответившим, прочитай ВСЕ что написано и сделай как тебе надо.


 
Vlad Oshin ©   (2008-08-28 12:45) [14]

:)

procedure EditClck (Self : TEdit; Sender : TEdit; var Key:char);
begin
 ShowMessage("Во мне, "+Self.Name+", нажали  "+Key);
end;

procedure AssignEditKey (const Edit : TEdit);
var
 Method : TMethod;
begin
 Method.Code := @EditClck;
 Method.Data := Edit;
 Edit.OnKeyPress := TKeyPressEvent (Method);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
begin
for i:=0 to ComponentCount-1 do
  if (Components[i] is TEdit) then
      AssignEditKey(TEdit(Components[i]));
end;


 
Игорь Шевченко ©   (2008-08-28 12:47) [15]


> печатаешь на компоненте Edit тупо текст, нажимаешь, например,
>  Enter и срабатывает процедура


type
 TFoo = class(TForm)
   Edit1: TEdit;
   Edit2: TEdit;
 ....
   procedure FormCreate(Sender: TObject);
 private
   proceduce EditKeyPress (Sender: TObject; var Key: Char);
 end;

procedure TFoo.FormCreate(Sender: TObject);
var
 I: Integer;
begin
 for I:=0 to ComponentCount - 1 do
    if (Components[I] is TEdit) and МнеВЭтотЭдитНужноВставитьПроцедуру then
      TEdit(Components[I]).OnKeyPress := EditKeypress;
end;

proceduce TFoo.EditKeyPress (Sender: TObject; var Key: Char);
begin
  if Key = #13 then
    with Sender as TEdit do
    begin
       ДелаюЧтоХочу
    end;
end;
 


 
Leonid Troyanovsky ©   (2008-08-28 12:53) [16]


> snake-as ©   (28.08.08 12:39) [12]

> печатаешь на компоненте Edit тупо текст, нажимаешь, например,
>  Enter и срабатывает процедура. И так в каждом компоненте.
>  Конечно, можно вручную прописать на каждом, но хотелось
> автоматизировать.  


procedure TForm1.CMDialogKey(var msg: TCMDialogKey); // message cm_DialogKey;
begin
 if (msg.CharCode = vk_return) then
   begin
     if ActiveControl is TEdit then
       MyEditProcedure(ActiveControl);
   end;
 inherited;
end;

--
Regards, LVT.


 
Vlad Oshin ©   (2008-08-28 12:54) [17]

а вернемся к


procedure EditClck (Self : TEdit; Sender : TEdit);
begin
ShowMessage("По мне, "+Self.Name+", кликнули  ");
end;

procedure AssignEditKey (const Edit : TEdit);
var
Method : TMethod;
begin
Method.Code := @EditClck;
Method.Data := Edit;
Edit.OnKeyPress := TNotifyEvent (Method);
// Edit.OnKeyPress := TKeyPressEvent (Method);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
begin
for i:=0 to ComponentCount-1 do
 if (Components[i] is TEdit) then
     AssignEditKey(TEdit(Components[i]));
end;
[Pascal Error] Unit1.pas(40): E2009 Incompatible types: "Parameter lists differ"

 TNotifyEvent = procedure(Sender: TObject) of object;
 TKeyPressEvent = procedure(Sender: TObject; var Key: Char) of object;
можно ли как-то  в ошибочном варианте(в этом посте), запихнуть(как-нибудь, как угодно) еще и этот параметр (var Key: Char), чтобы работало(откомпилировалось) через TNotifyEvent?


 
Slym ©   (2008-08-28 13:02) [18]

procedure EditClck (Self,Sender: TObject; var Key: Char);
begin
 ShowMessage("По мне, "+TEdit(Self).Name+", жманули :)");
end;

procedure AssignEditKey (const Edit : TEdit);
var
 Method : TMethod;
begin
 Method.Code := @EditClck;
 Method.Data := Edit;
 Edit.OnKeyPress := TKeyPressEvent (Method);
end;

procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
begin
 for i:=0 to ComponentCount-1 do
   if (Components[i] is TEdit) then
     AssignEditKey(TEdit(Components[i]));
end;


 
Dennis I. Komarov ©   (2008-08-28 13:05) [19]

[12]

Уау, какой телепатор :)


 
Slym ©   (2008-08-28 13:10) [20]

Vlad Oshin ©   (28.08.08 12:54) [17]
чтобы работало(откомпилировалось) через TNotifyEvent?

хитрый какой :)
procedure EditClck (Self,Sender: TObject; var Key: Char);
begin
 ShowMessage("По мне, "+TEdit(Self).Name+", жманули :)");
end;

procedure AssignEditKey (const Edit : TEdit);
var
 Method : TMethod;
begin
 Method.Code := @EditClck;
 Method.Data := Edit;
 SetMethodProp(Edit,"OnKeyPress",Method);
end;


 
snake-as ©   (2008-08-28 15:36) [21]

Спасибо огроменное. Пойду дальше делать..



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

Форум: "Начинающим";
Текущий архив: 2008.10.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.007 c
2-1219849223
Terasbetoni
2008-08-27 19:00
2008.10.05
Вопрос о создании компонента


11-1194302140
tigra
2007-11-06 01:35
2008.10.05
form.caption


15-1218618226
oldman
2008-08-13 13:03
2008.10.05
Бипы при старте машины (неисправность устройств)


2-1219495279
Drone
2008-08-23 16:41
2008.10.05
Вопрос относительно объектов


15-1218801331
_koha
2008-08-15 15:55
2008.10.05
Неприодалимые глюги ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский