![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Добрый день! Столкнулся с такой проблемой, на первый взгляд тривиальной. Есть комбобокс, в нем хранится (и предлагается на выбор) список последних посещенных директорий. Перед переходом в директорию осуществляется проверка ее существования. Если директории уже не существует - переход в некий каталог по умолчанию. Вот этот каталог в список комбобокса заносить не надо, но если мы в него перешли - его надо отображать в заголовке комбобокса. Что делаю:
Код:
ComboBox1.Text:=wd; Как отобразить текст, которого нет в списке комбобокса? |
#2
|
||||
|
||||
![]() Как вариант добавить item и выбрать его. При фокусировке удалять.
00110001 00101100 00110110 00110001 00111000 00110000 00110011 00110011 00111001 00111000 00111000 00110111 00110100 00111001 00111000 00111001 00110100 00111000 00110100 00111000 00110010 00110000 00110100 00110101 00111000 00110110 00111000 00110011 00110100 00110011 00110110 00110101 00110110 |
#3
|
||||
|
||||
![]() мало информации...
стиль у ComboBox == csDropDownList? тогда он отображает текст только из выбранного Items или пусто если ItemIndex == -1. если стиль csDropDown, то пользователь вообще не сможет вручную ввести имя папки - он будет постоянно сбрасываться на "по умолчанию". это если делать обработку в событии OnChange. если же сделать что обработка начнется при нажатии на кнопку, то все будет отлично работать и ComboBox1.Text:=''; и пользователь сможет руками набрать имя. Пишу программы за еду. __________________ |
#4
|
|||
|
|||
![]() ~TB~ Ваш вариант пробовал - не помогает, да и не эстетично как-то
![]() NumLock стиль стоит csDropDown список может быть раскрыт, можно писать в строке ввода - исходя из инета (проверено текст вручную вводится) У меня проблема как раз не с тем, чтоб вручную ввести, проблема чтоб програмно заставить показать комбобокс текст отличный от того, что есть в его итемсах Последний раз редактировалось Oreon, 26.07.2012 в 18:28. |
#5
|
||||
|
||||
![]() тогда вот это точно работает:
Код:
ComboBox1.Text:='any text'; Пишу программы за еду. __________________ |
#6
|
||||
|
||||
![]() Цитата:
![]() Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#7
|
|||
|
|||
![]() не эстетичный способ тоже работает
>woweook< |
#8
|
||||
|
||||
![]() Цитата:
вообщем без минимального пректа ТС тут сложно подсказать решение. Пишу программы за еду. __________________ |
#9
|
|||
|
|||
![]() Цитата:
Цитата:
|
#10
|
||||
|
||||
![]() без проблем. выбирай что хочешь и жми на кнопку:
http://zalil.ru/33615169 Пишу программы за еду. __________________ |
#11
|
|||
|
|||
![]() Это не совсем то - вводится лишняя кнопка, можно без кнопки поставить на onexit, но тогда нужно щелкать на другой компонент, что тоже не то. Задача стоит именно при выборе пользователем битого пути перебрасывать его на путь по умолчанию и показывать это в комбобоксе не занося его в список (ибо мусор) дабы не вводить пользователя в заблуждение.
PS: по перечисленным вами причинам работаю не через OnChange, а через OnSelect |
#12
|
||||
|
||||
![]() а как быть когда пользователь начинает руками набирать путь в поле?
Пишу программы за еду. __________________ |
#13
|
|||
|
|||
![]() ввод заканчивается клавишей ентер, далее проверяем путь если он есть - добавляем в список и переходим, если путь битый - переходим на путь по умолчанию и нада его показать в комбобоксе, а он не показывается... ну в общем мы перешли на то с чего начали
![]() |
#14
|
||||
|
||||
![]() Код:
type TForm1 = class(TForm) ComboBox1: TComboBox; Memo1: TMemo; procedure ComboBox1Select(Sender: TObject); procedure ComboBox1KeyPress(Sender: TObject; var Key: Char); private { Private declarations } procedure SetDef(var Msg: TMessage); message WM_USER+$1001; public { Public declarations } end; ... procedure TForm1.SetDef(var Msg: TMessage); begin ComboBox1.Text:='d:\Documents'; Memo1.Lines.Add(ComboBox1.Text); end; procedure TForm1.ComboBox1Select(Sender: TObject); begin if not DirectoryExists(ComboBox1.Text) then PostMessage(Handle, WM_USER+$1001, 0, 0) else Memo1.Lines.Add(ComboBox1.Text); end; procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char); begin if Key=#13 then ComboBox1Select(ComboBox1); end; оно? http://zalil.ru/33615616 Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
Oreon (28.07.2012)
|
#15
|
|||
|
|||
![]() Обалдеть, работает!
![]() |