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

Вниз

Как определить событие?   Найти похожие ветки 

 
MaXie   (2003-02-14 11:04) [0]

Есть поле для списка ListBox1 и есть связанная с ним кнопка Button1. Пока список пуст свойство кнопки Enabled равно False (, т.е. кнопка не активна!). Как только значение списка Items.Count становится отличным от нуля (, т.е. в списке появляется хотя бы одна запись!), значение кнопки Button1.Enabled должно измениться на True (, т.е. кнопка должна стать активной!).
Вопрос тривиальный, но требует не совсем тривиального решения. Самое простое его решение - это когда объект, наполняющий список ListBox1 посылает команду объекту Button1: Button1.Enabled := True. Но необходимо принципиально иное - команду Button1.Enabled := True должен посылать именно список ListBox1, как реакция на событие изменения состава строк, содержащихся в нем.
Спасибо всем кто откликнется!


 
Mike_Goblin   (2003-02-14 11:07) [1]

Создать компонент-наследник ListBox


 
first_aid   (2003-02-14 11:14) [2]

Я думаю тебе поможет компонент наследник и сообщение WM_DELETEITEM.


 
Романов Р.В.   (2003-02-14 11:15) [3]

TActionList
TAction


 
MaXie   (2003-02-14 11:19) [4]

Можно чуть-чуть по-подробней?!
И как разместить на форме компонент-наследник ListBox (именно разместить, а не создать!)?


 
first_aid   (2003-02-14 11:27) [5]

Я что-то несовсем уловил вопрос.

Что значит как разместить, если у тебя уже есть наследник TListBox c необходимой функциональностью, то его размешение на форме ничем не отличается от размешения стандартного делфийского.


 
MaXie   (2003-02-14 11:51) [6]

Компонент-наследник создается при помощи вызова конструктора класса-наследника?

Можно ли разместить его с помощью IDE-интерфейса (среды разработки Delphi) или придется в ручную прописывать десяток свойст размещаего на форме объекта (положение, ширина, высота и др.)?


 
first_aid   (2003-02-14 12:04) [7]

Естественно наследник создается вызовом конструкторы, только в твоем случае (чтобы добавить событие) переопределять конструктор родителя вовсе не обязательно.

Конечно можно главное чтобы он был в палитре компонентов IDE (его туда установить надо).


 
Романов Р.В.   (2003-02-14 12:16) [8]

Все это делается стандартным способом через TActin за 1 минуту.


 
MaXie   (2003-02-14 12:25) [9]

> first_aid
Огромное спасибо за ценный совет. В двух словах (буквально тезисами), если не сложно, можешь изложить суть технологии создания и установки в палитру VCL созданного компонента?

> Романов Р.В.
Возможно привести фрагмент кода, проливающий свет на решение вышеизложенного мной вопроса?


 
first_aid   (2003-02-14 12:36) [10]

Главное меню IDE\Component\Install component...


 
Романов Р.В.   (2003-02-14 12:42) [11]

На вкладке Standard есть компонент ActionList. Помещаем его на форму. Двойной щелчек ЛКМ на нем открывает редактор. Добавляем New Action. В Object Inspector на вкладке Events создаем обработчик onUpdate, который выглядит так

procedure TForm1.Action1Update(Sender: TObject);
begin
TAction(Sender).Enabled := ListBox1.Items.Count > 0;
end;

Свойства Caption, Hint, onExecute заполняются по вкусу.

В Object Inspector смотрим свойства интерисующей нас кнопки. Самое верхнее Action. В нем выбираем только что созданный Action1.
Идем пить пиво.


 
MaXie   (2003-02-14 13:09) [12]

> first_aid
Все сообразил! Низкий поклон тебе за помощь!

> Романов Р.В.
Тоже вариант, но как быть когда требуется определить не одно, а два или три, или n-событий?


 
Романов Р.В.   (2003-02-14 13:12) [13]

есть операторы and и or



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

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

Наверх





Память: 0.47 MB
Время: 0.02 c
1-75922
AlexanderSK
2003-02-13 17:17
2003.02.24
Удаление фрейма


8-76042
pavel_ak
2002-11-10 15:10
2003.02.24
Посоветуйте че-нить по OpenGL


4-76230
dkDimon
2003-01-07 23:48
2003.02.24
Реестр блин


14-76150
Shadow
2003-02-06 21:16
2003.02.24
Интересно...


3-75806
Fishka
2003-02-06 14:01
2003.02.24
Поиск нескольких слов (





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