Форум: "Основная";
Текущий архив: 2002.08.26;
Скачать: [xml.tar.bz2];
ВнизЧто-то типа eval или другие способы... Найти похожие ветки
← →
Olorin (2002-08-15 14:06) [0]Что нибудь типа eval есть в Дельфях??
Задача такова... с каждой кнопкой у меня свазанны 2а поля ввода.... кнопок много и на каждую писать отдельную процедуру туговато и не красиво... через Sender я получаю только кнопку а как обратится к 2м полям ввода? :o)
← →
Skier (2002-08-15 14:09) [1]>Olorin
> ... с каждой кнопкой у меня свазанны 2а поля ввода
Поясни : как это - "связаны" ?
← →
Olorin (2002-08-15 14:14) [2]ну тоесть из соответствующих полей надо брать значения при обработке клика на кнопки :o)
EditBox1
EditBox2
EditBox3
Button1
Button2
Button3
При нажатии на Button1 надо взять значение из EditBox1 :o)
← →
Skier (2002-08-15 14:17) [3]>Olorin
Только из EditBox1 или ещё и из второго какого-то Edit-a ?
← →
Olorin (2002-08-15 14:23) [4]у меня комбобокс и едитбокс... тоесть у них часть имени одинаковая различаются только цифирями... тоесть кнопке
Button1 надо брать из EditBox1 и ComboBox1 :o)
← →
Skier (2002-08-15 14:38) [5]>Olorin
Примерно так : (обработчик OnClick у всех один и тот же)
procedure TForm1.ButtonClick(Sender: TObject);
function GetIndexFromName(const AName : String) : String;
var
ii : Integer;
AStrIndex : String;
begin
Result := EmptyStr;
if AName = EmptyStr then Exit;
for ii := Length(AName) downto 1 do begin
if AName[ii] in ["A".."Z", "a".."z"] then Exit;
Result := Result + AName[ii];
end; //for
end; //GetIndexFromName
var
AComboBox : TComboBox;
AEdit : TEdit;
AIndex : String;
begin
AIndex := GetIndexFromName(TButton(Sender).Name);
if AIndex <> EmptyStr then begin
AComboBox := TComboBox(FindComponent("ComboBox"+ AIndex));
AEdit := TEdit(FindComponent("Edit"+ AIndex));
if (AComboBox <> nil) and (AEdit <> nil) then begin
ShowMessage("Found");
//your code goes here...
end; //if
end; //if
end;
← →
Olorin (2002-08-15 14:55) [6]
with Sender as TSpeedButton do begin
ShowMessage(Name); //Тут все ок
q := Name[14]; // нужная цифра
ShowMessage(q); // есть!
edt := TEdit(FindComponent("edtIMouse"+q));
z := "edtIMouse"+q; //
ShowMessage(z); //есть такая песня...
ShowMessage(edt.Text); // а тут пусто :o((
end;
← →
Skier (2002-08-15 15:01) [7]>Olorin
Нет слов...
q := Name[14] - Что это за чушь ?
← →
Olorin (2002-08-15 15:08) [8]>Skier ©
Сорри пока ждал ответа экспериментировал... 14 позиция так как раз цифра... странно что ваш пример на ура пошел... а мой нифига... ниччего не пойму...
← →
Skier (2002-08-15 15:15) [9]>Olorin
если edt <> nil, то ShowMessage(edt.Text); выводит
пустую строку, потому что у TEdita нет текста.
Не думал об этом ? :)
← →
Olorin (2002-08-15 15:24) [10]>Skier ©
Не пойму разницы:
AEdit := TEdit(FindComponent("Edit"+ AIndex));
ShowMessage(AEdit.Text);
Все ок!
edt := TEdit(FindComponent("edtIMouse"+q));
ShowMessage(edt.Text);
Пусто
На первый взгляд все одинаково :O)
← →
Skier (2002-08-15 15:30) [11]>Olorin
> На первый взгляд все одинаково
Ага, только мааааааааленькая мелочь - имена разные
Edit + бла-бла-бла и edtIMouse + бла-бла-бла...
← →
Olorin (2002-08-15 15:34) [12]>Skier ©
Нее я то на своем примере пробовал и там в вашем примере стоит:
AEdit := TEdit(FindComponent("edtIMouse"+ AIndex));
Вот это то и прикольно что все одинаково... толи из-за with что-то не то происходит...
← →
Skier (2002-08-15 15:37) [13]>Olorin
edt :=
TEdit( Владелец_TEdit-а.FindComponent("edtIMouse"+q));
← →
Olorin (2002-08-15 15:42) [14]Ок сегодня я уже не варю... пойду домой и просплюсь если что завтра докопаюсь :o)
Спасибо большое :o)
← →
TTCustomDelphiMaster (2002-08-15 16:31) [15]Поправочка
for ii := Length(AName) downto 1 do begin
if AName[ii] in ["A".."Z", "a".."z"] then Exit;
Result := AName[ii] + Result;
← →
Skier (2002-08-15 16:35) [16]>TTCustomDelphiMaster
Ага. Точно. Слона не заметил :) Спасибо !
← →
Olorin (2002-08-16 07:00) [17]Таак теперь доперло... вроде как в моем примере теряется Sender :o)
Утро вечера мудренее (с)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.08.26;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c