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

Вниз

Проблема с эдитами.   Найти похожие ветки 

 
Furyous   (2003-04-03 08:18) [0]

У меня на edit, на даблклик стоит 2 условия:

procedure TForm1.P2DblClick(Sender: TObject);
var i :integer;
begin
if (enable[1] = false) then
begin
form1.p1.ReadOnly := false;
form1.p1.Color := clbtnhighlight;
end

else
begin
form1.p1.ReadOnly := true;
form1.p1.Color := clbtnface;
end;
enable[1] := not enable[i];

end;

Но поскольку эдитов будет много, я сделал процедуру:

procedure enablez(i : integer);
begin

if (enable[i] = false) then
begin
form1.p1.ReadOnly := false;
form1.p1.Color := clbtnhighlight;
end

else
begin
form1.p1.ReadOnly := true;
form1.p1.Color := clbtnface;
end;
enable[i] := not enable[i];

end;

и на дабл клик просто посылаю сюда i и вызываю процедуру.

И тут появилась проблема, нужно как-то менять этот p1, т.к. оно тока на один эдит работать

будет. Подскажите решение.


 
TY   (2003-04-03 08:50) [1]

Скажи толком что тебе надо сделать. Что то я в твоем коде
с трудом ориетируюсь. На словах.


 
Bel ©   (2003-04-03 09:54) [2]

Обрати внимание, у тебя при вызове метода есть параметр Sender: TObject. Его то и надо использовать. Пример:
(Sender as TEdit).ReadOnly := True;


 
Михаил Баринов   (2003-04-03 10:03) [3]

Если я правильно понял, то тебе нужно по даблклику на edit-е менять ее доступность и цвет. Это вообще можно проще сделать...

TMyForm = class(TForm)
procedure EditDblClick(Sender: TObject);
end;

procedure TMyForm.EditDblClick(Sender: TObject);
begin
if not Sender is TEdit then
Exit;
with TEdit(Sender) do
begin
if ReadOnly then
begin
ReadOnly := False;
Color := clHighLight;
end
else
begin
ReadOnly := True;
Color := clBtnface;
end;
end;
end;

И вешай эту процедуру ко всем edit-ам...


 
Furyous   (2003-04-03 15:16) [4]

TMyForm = class(TForm)
procedure EditDblClick(Sender: TObject);
end; - вот это не рабоает, а если просто тот код на даблклик ставить, то это не нужно, я же для сокращения кода и сделал процедуру смены текста и ридонли.



 
Bel ©   (2003-04-03 17:22) [5]

Можно сделать всё так, как ты и сделал, если тебе этого хочется.
Ещё раз обращаю твоё внимание на параметр Sender. Передавай его в свою процедуру и там определяй, что за контрол инициировал событие. Методику тебе уже объяснили, даже пример кода дали.
Должно быть что-то типа такого:
procedure enablez(i : integer);


 
Bel ©   (2003-04-03 17:23) [6]

Прошу прощения, код такой:
procedure enablez(Sender: TObject, i : integer);



 
TY   (2003-04-04 01:59) [7]

Я не зря спросил о целях задачи, они до сих пор четко не ясны если просто надо по двойному клику менять цвет и делать любой едит недоступным для редактирования то это делается так

procedure TForm1.DogadaysaSam;
begin
If TEdit(ActiveControl).Color=clRed Then begin
TEdit(ActiveControl).ReadOnly:=False;
TEdit(ActiveControl).Color:=clWhite end Else begin
TEdit(ActiveControl).Color:=clRed ;
TEdit(ActiveControl).ReadOnly:=True;
end
end;


procedure TForm1.Edit1DblClick(Sender: TObject);
begin
DogadaysaSam;
end;
procedure TForm1.Edit2DblClick(Sender: TObject);
begin
DogadaysaSam;
end;

если что то другое то скажи и тебе помогут, а то получается
"Догадайся сам!!"


 
Furyous   (2003-04-04 14:32) [8]

Во, канает, снкс.



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

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

Наверх




Память: 0.48 MB
Время: 0.013 c
14-54889
Delphi-Beginner
2003-04-02 11:33
2003.04.17
для чего нужен QuickReport ?


14-54831
Думкин
2003-04-01 06:15
2003.04.17
День птиц, дураков и математиков


14-54799
BJValentine
2003-03-31 14:41
2003.04.17
Outlook ^%^%$


3-54447
jen_bond
2003-03-28 17:38
2003.04.17
Проблемма с многопользовательской БД.


7-54933
volk
2003-02-16 19:11
2003.04.17
Как получить Product ID