Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.07.02;
Скачать: [xml.tar.bz2];

Вниз

не работает ComboBox.SelStart   Найти похожие ветки 

 
Андрей Молчанов   (2006-05-21 19:31) [0]

Необходимо по нажатию кнопки вставить текст "%YEAR%" в ComboBox, но не вместо уже существующего текста, а внутрь. Выполняю следующий код:


 ComboBox.Text := Copy(ComboBox.Text, 1, ComboBox.SelStart) + "%YEAR%" + Copy(ComboBox.Text, ComboBox.SelStart + ComboBox.SelLength + 1, MaxInt);


Однако SelStart и SelLength всегда содержат 0. Я думаю, это из-за того, что в момент нажатия кнопки комбо-бокс теряет фокус. Что можно сделать


 
Leonid Troyanovsky ©   (2006-05-21 20:58) [1]


> Андрей Молчанов   (21.05.06 19:31)  

> фокус. Что можно сделать


 ComboBox1.Items.Add("%YEAR%") ?

--
Regards, LVT.


 
begin...end ©   (2006-05-21 21:28) [2]

> Андрей Молчанов   (21.05.06 19:31)

> Что можно сделать

Установить фокус вручную?

Кстати, код:

> ComboBox.Text := Copy(ComboBox.Text, 1, ComboBox.SelStart)
> + "%YEAR%" + Copy(ComboBox.Text, ComboBox.SelStart + ComboBox.SelLength
> + 1, MaxInt);

может быть заменён на:

ComboBox.SelText := "%YEAR%".


 
Андрей Молчанов   (2006-05-21 21:28) [3]

Нет, я имею в виду, что хочу вставить %YEAR% в текст. То есть, если в комбобоксе текст "qwerty", курсор стоит после r и нет элементов, то элементов не добавится, но текст станет "qwer%YEAR%ty".

У меня появилась мысль - может быть сохранять SelStart и SelLength при потере фокуса? Но здесь опять проблема - я пытаюсь поймать WM_ACTIVATE через ComboBox.WindowProc, но сообщение не ловится. В чем может быть дело?

 if Message.Msg = WM_ACTIVATE then begin
   SelStart := ComboBox.SelStart;
   SelLength := ComboBox.SelLength;
 end;
 OldWndProc(Message);


 
Андрей Молчанов   (2006-05-21 21:33) [4]

При установке фокуса выделяется весь текст. Насчет ComboBox.SelText спасибо.


 
begin...end ©   (2006-05-21 21:43) [5]

> Андрей Молчанов   (21.05.06 21:33) [4]

А почему бы в качестве кнопки не использовать TSpeedButton, который не забирает фокус?


 
Андрей Молчанов   (2006-05-21 21:57) [6]

Тоже вариант, но мне кажется, что более эффективным вариантом будет сохранение SelStart и SelLength перед потерей фокуса. Нашел событие OnExit, но оно вызывается уже после потери фокуса. :(


 
@Lex ©   (2006-05-21 22:09) [7]

пОПРОБУЙ ТАК.
Кидай на форму TApplicationEvent.

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
 var Handled: Boolean);
begin
 if Msg.hwnd = ComboBox1.Handle then
   //if Msg.Message = ? then begin
   if ComboBox1.SelStart <> 0 then begin
     SelStart := ComboBox1.SelStart;
     SelLength := ComboBox1.SelLength;
   end;
end;

корявенько -(.  Может в этом направлении покопать...


 
@Lex ©   (2006-05-21 22:15) [8]

if MSg.message = 512 then begin
  SelStart := ComboBox1.SelStart;
  SelLength := ComboBox1.SelLength;
end;



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

Форум: "Основная";
Текущий архив: 2006.07.02;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.009 c
1-1148397571
dimak-2k
2006-05-23 19:19
2006.07.02
Как запустить хелп???


2-1150270626
Olleg_ator
2006-06-14 11:37
2006.07.02
Исправить структуру dbf таблицы


2-1149843241
VitV
2006-06-09 12:54
2006.07.02
Подсчёт количества строк в DBLookupListBox


15-1149575485
kaif
2006-06-06 10:31
2006.07.02
Сегодня замечательная и независимая от локалей дата.


4-1143526312
Nike
2006-03-28 10:11
2006.07.02
Получить список всех контролов на чужой форме





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