Форум: "Основная";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];
ВнизПроблема с эдитами. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c