Главная страница
    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.011 c
3-1147101888
__alex
2006-05-08 19:24
2006.07.02
Есть ли в Paradox каскадное удаление?


4-1143522040
MaxxSoft
2006-03-28 09:00
2006.07.02
SendMessage из разных процессов


6-1140519916
Nachinaushiy
2006-02-21 14:05
2006.07.02
Место на диске у конечного хоста при передачи данных


2-1150117058
Марина
2006-06-12 16:57
2006.07.02
Проблема с отрисовкой.


15-1149682538
Vlad Oshin
2006-06-07 16:15
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский