Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> при получении фокуса листбоксом конпка становилась, доступной, а при потери фокуса - недост 
:(
    Опции темы
Drizhenko
Дата 19.1.2006, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



Есть листбокс и кнопка. Как сделать чтобы при получении фокуса листбоксом конпка становилась доступной (enabled=true), а при потери фокуса - недоступной.
PM MAIL   Вверх
RN3QGA
Дата 19.1.2006, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 28.11.2005
Где: Воронежская обл.

Репутация: нет
Всего: нет



Если правильно понял то можно попробывать обработать события для ListBox OnEnter и OnExit .
PM MAIL   Вверх
ShadeSt
Дата 19.1.2006, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 256
Регистрация: 9.8.2005
Где: Россия, г. Ставро поль

Репутация: нет
Всего: 7



Вот только я не пойму зачем это надо?? Ведь на кнопку в таком случае никогда не нажать
Код

procedure TForm1.ListBox1Enter(Sender: TObject);
begin
  Button1.Enabled := True;
end;

procedure TForm1.ListBox1Exit(Sender: TObject);
begin
  Button1.Enabled := False;
end;


Это сообщение отредактировал(а) ShadeSt - 19.1.2006, 09:30


--------------------
It's nice to be importand, but it's more importand to be nice © Scooter
PM MAIL ICQ Jabber   Вверх
Drizhenko
Дата 19.1.2006, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



Точно. Нажать нельзя. В обще нужно так сделать если в листбоксе ничего не выбрано, то на кнопку нельзя нажать. Не могу понять в какое событие это запихать.
PM MAIL   Вверх
Rennigth
Дата 19.1.2006, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



немного лень тестировать на какие события это вешать, но впринципе это должно работать:
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    procedure ListBox1Enter(Sender: TObject);
    procedure ListBox1Exit(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
  private
    function GetBtnEnabled: Boolean;
  public
    property BtnEnabled: Boolean read GetBtnEnabled;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.GetBtnEnabled: Boolean;
begin
  Result := ListBox1.ItemIndex <> -1;
end;

procedure TForm1.ListBox1Enter(Sender: TObject);
begin
  Button1.Enabled := BtnEnabled;
end;

procedure TForm1.ListBox1Exit(Sender: TObject);
begin
  Button1.Enabled := BtnEnabled;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
  Button1.Enabled := BtnEnabled;
end;

end.



--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Snowy
Дата 19.1.2006, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Код

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    ApplicationEvents1: TApplicationEvents;
    procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
begin
  Button1.Enabled := (ListBox1.ItemIndex >= 0);
end;

PM MAIL   Вверх
Alexeis
Дата 19.1.2006, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Я думаю что лучше будет перекрыть методы Tlistbox
GetSelected
SetSelected
в новом наследнике.
тогда можно будет отследить все програмные измениения (внутренние).

Кроме надо будет еще обрабатывать onClick для слежения за пользовательскими изменениями.

для слежения за изменениями из внешней програмы
надо отлавливать сообщения
LB_SETSEL
LB_SETCURSEL
тогда уже нет необходимости в переопределении
GetSelected
SetSelected

Приемущество этого метода по сравнению с методом Snowy соостоит в том что не осуществляются постоянные проверки.

метод Rennigth не контролирует програмные изменения




--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0558 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.