Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-85112
VSD
2002-08-15 06:00
2002.08.26
Автопозиционирование компонента (например Panel) по центру


1-85056
maxim2
2002-08-14 13:32
2002.08.26
Подскажите как закрасить


14-85233
AL2002
2002-07-31 15:32
2002.08.26
Опять про пятнашки


7-85268
Tahion
2002-06-03 20:20
2002.08.26
Как перестроить кэш иконок в Виндовс?


14-85204
Skyle
2002-07-31 09:04
2002.08.26
Сервисы NT





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