Текущий архив: 2008.10.05;
Скачать: CL | DM;
Вниз
Как сделать, чобы при нажатии кнопки на каждом компоненте 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;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.006 c