Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2017, 15:42   #1
Stepan_P
Пользователь
 
Регистрация: 17.12.2015
Сообщений: 14
По умолчанию Связь между ComboBox и Edit

Здравствуйте!
Подскажите пожалуйста, как сделать так, чтобы при выборе значения (например, Компьютер) в компоненте ComboBox1, в Edit1 автоматически вывелось соответствующее этой записи значение (например, Персональный)?
Stepan_P вне форума Ответить с цитированием
Старый 19.05.2017, 16:06   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Использовать соответствующее событие комбобокса (наверно что-то со словом Change).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.05.2017, 16:11   #3
Stepan_P
Пользователь
 
Регистрация: 17.12.2015
Сообщений: 14
По умолчанию

Это я знаю. Не понимаю, как записать данный алгоритм на языке программирования
Stepan_P вне форума Ответить с цитированием
Старый 19.05.2017, 16:27   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

назначаете код на событие OnChange

потом пишете, например, так:
Код:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
 if  Trim(AnsiUpperCase(ComboBox1.Text))='КОМПЬЮТЕР' // ComboBox1.ItemIndex];
         then Edit1.Text := 'персональный'
         else Edit1.Text := 'совсем не персональный';
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.05.2017, 16:28   #5
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Код:
if LowerCase(Trim(ComboBox1.Text)) = 'компьютер' then
  Edit1.Text := 'Персональный';

UPDATE
Сорян, на секунду припозднился
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 19.05.2017, 16:32   #6
Filka
Форумчанин
 
Регистрация: 29.10.2015
Сообщений: 272
По умолчанию

Код:
const
  cMyRecs: array[0..2] of record
    A, B: string;
  end = ((A: 'Компьютер'; B: 'Персональный'),
         (A: 'A1'; B: 'B1'),
         (A: 'A2'; B: 'B2'));

procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;
begin
  for I := Low(cMyRecs) to High(cMyRecs) do
    ComboBox1.Items.Add(cMyRecs[I].A);
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  Edit1.Text := cMyRecs[ComboBox1.ItemIndex].B;
end;
Filka вне форума Ответить с цитированием
Старый 19.05.2017, 16:38   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Filka, код, конечно, отличный.
и очень надеюсь, что автор темы сумеет им воспользоваться.
вот только я бы обнулил ComboBox перед заполнением:
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;
begin
  ComboBox1.Items.Clear;
  for I := Low(cMyRecs) to High(cMyRecs) do
    ComboBox1.Items.Add(cMyRecs[I].A);
end;
Цитата:
Сообщение от Sciv Посмотреть сообщение
Сорян, на секунду припозднился
ничего. удивительно, как у нас логика сравнения совпала
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.05.2017, 16:53   #8
Filka
Форумчанин
 
Регистрация: 29.10.2015
Сообщений: 272
По умолчанию

Тогда лучше так:
Код:
  with ComboBox1.Items do
  begin
    BeginUpdate;
    try
      Clear;
      for I := Low(cMyRecs) to High(cMyRecs) do
        Add(cMyRecs[I].A);
    finally
      EndUpdate;
    end;
  end;
Filka вне форума Ответить с цитированием
Старый 19.05.2017, 17:07   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Filka Посмотреть сообщение
Тогда лучше так
без сарказма - а чем лучше то?
имхо, BeginUpdate / EndUpdate не сильно повлияют, т.к. комбобокса (как и самой формы) ещё не видно.

try - finally - тоже не сильно нужны в данном случае (на мой взгляд).

Просветите, пожалуйста, что я упускаю из вида?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.05.2017, 17:18   #10
Stepan_P
Пользователь
 
Регистрация: 17.12.2015
Сообщений: 14
По умолчанию

Спасибо всем большое, попробую сделать
Stepan_P вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Связь checkbox и combobox в Word Geniy_Dzydu Microsoft Office Word 0 08.04.2016 16:06
Связь combobox и db grid jawa250t БД в Delphi 1 12.04.2012 11:17
Связь Edit и Listbox Афанасий[vedma] Компоненты Delphi 4 06.08.2011 15:51
Связь между файлами tae1980 Microsoft Office Excel 1 14.04.2009 20:15
Связь ComboBox с DBImage и DBMemo gane4ka Помощь студентам 8 14.12.2007 17:52