Главная страница
    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.012 c
15-1149527219
pGn-BrutaL
2006-06-05 21:06
2006.07.02
церковники запретили продажу кода да винчи...


15-1149641654
tButton
2006-06-07 04:54
2006.07.02
радио


15-1148544478
Agent13
2006-05-25 12:07
2006.07.02
2007 Microsoft Office System Beta 2


2-1149778397
Vasiliy
2006-06-08 18:53
2006.07.02
Как установит Increment для TrackBar ?


2-1150105269
Fiallo4ka
2006-06-12 13:41
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский