Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
ВнизСобытия при потере и поллучении фокуса Найти похожие ветки
← →
Domix © (2005-03-03 08:23) [0]Подскажите пожалуста какие события происходят при потере и установке фокуса в компоненте TEdit
← →
begin...end © (2005-03-03 08:27) [1]> Domix © (03.03.05 8:23)
OnEnter, OnExit
← →
Domix © (2005-03-03 08:31) [2]Спасибо!!
И можно еще один вопрос как определить имя активного компонента
в частности на форме находится 5 Edit"ов узнать имя активного
За ранее благодарен!!
← →
begin...end © (2005-03-03 08:33) [3]> Domix © (03.03.05 8:31) [2]
Screen.ActiveComponent.Name
← →
Gero © (2005-03-03 08:37) [4]
> Domix © (03.03.05 08:31)
TForm.ActiveControl
← →
begin...end © (2005-03-03 08:42) [5]> begin...end © (03.03.05 8:33) [3]
Упс... Screen.ActiveControl.Name
← →
Domix © (2005-03-03 08:48) [6]Возникла такая проблема при получение потери вокуса я я делаю следущие действия
procedure TFSpTovar.ENameEnter(Sender: TObject);
begin
EName.BorderStyle:=bsSingle;
EName.Color:=TColor($FFCCCC);
end;
procedure TFSpTovar.ENameExit(Sender: TObject);
begin
EName.BorderStyle:=bsNone;
EName.Color:=clBtnFace;
end;
но почему то отражается только прямоугольник $FFCCCC цвета
← →
Gero © (2005-03-03 08:50) [7]
> Domix © (03.03.05 08:48)
Если EName — это TPanel, то рискну предположить, что ENameExit нигде не выполняется.
← →
Gero © (2005-03-03 08:50) [8]
> Domix © (03.03.05 08:48)
Если EName — это TPanel, то рискну предположить, что ENameExit нигде не выполняется.
← →
Domix © (2005-03-03 08:51) [9]Нет это эдит я же писал ранее
← →
Domix © (2005-03-03 08:52) [10]при этом даже данные в эдите не отображаются
← →
Gero © (2005-03-03 08:53) [11]Сорри, меня проглючило.
Вобщем все равно ENameExit не выполяется.
← →
Domix © (2005-03-03 08:53) [12]А как мне быть посоветуйте пожалуйста
← →
Gero © (2005-03-03 08:56) [13]Тебе нужно при получении и потере фокуса Edit"ом менять ему BorderStyle и Color?
ENameEnter и ENameExit — это обработчики событий OnEnter и OnExit соответственно?
← →
Domix © (2005-03-03 09:18) [14]И опять по кругу
> Domix © (03.03.05 08:23)
> Подскажите пожалуста какие события происходят при потере
> и установке фокуса в компоненте TEdit
← →
Gero © (2005-03-03 09:20) [15]Тебе уже дали ответ на этот вопрос.
Если в [13] все правильно, то ошибка где-то в твоей программе.
← →
Anatoly Podgoretsky © (2005-03-03 09:36) [16]И вновь продолжается бой.
И юный Домикс впереди.
← →
ghg © (2005-03-03 10:40) [17]кстати у меня тоже что то похожее был
хотел чтобы при потере фокуса Edit-ом сохранялось его содержимое в переменную, но когда Edit в фокусе и сразу нажимаем на кнопку перерисовки всего что на форме находится то, то что в обработчике OnExit не выполняется
почему?
вот код:
procedure TForm_shema.Edit5Exit(Sender: TObject);
begin
square.Ymin := strtofloat(Edit5.text);
end;
← →
ЮЮ © (2005-03-03 11:09) [18]>но когда Edit в фокусе и сразу нажимаем на кнопку перерисовки всего что на форме находится
Так Edit-то в фокусе и потеряет его только если фокус перейдет к другому компоненту. Если кнопка не TButton, а графическая, то и потери фокуса не будет
← →
ghg © (2005-03-03 12:24) [19]и что же делать если у меня TSpeedButton?
генерировать для всех TEdit событие?
вообще задача следующая: сохранять значение из TEdit при окончании редактирования (например потеря фокуса или обработка события другого компонента). Но использовать OnChange нельзя, потому как при изменении значения переменнной происходит перерисовка которая занимает много времени.
← →
ЮЮ © (2005-03-03 12:43) [20]>Но использовать OnChange нельзя
в OnChange просто фиксируй факт внесения изменеий в данном компоненте, в он Exit - сбрасывай. Тогда при нажатии на TSpeedButton картина будет ясна и если в фокусе находится тот самых компонент, в котором вносились изменения, принудительно лиши его фокуса, хотя бы на время
← →
ghg © (2005-03-03 12:52) [21]а если этих SpeedButton-ов и Edit-ов много?
для всех все проверять?
по-моему это не выход
может все эти изменения делать в каком-нить обработчике формы (владельце всех компонентов)?
← →
Anatoly Podgoretsky © (2005-03-03 12:58) [22]SpeedButton не забирает фокус.
← →
ghg © (2005-03-03 13:00) [23]>Anatoly Podgoretsky © (03.03.05 12:58) [22]
я это уже понял
и что же делать?
← →
ЮЮ © (2005-03-03 13:01) [24]>а если этих Edit-ов много?
Но ты же не поленился написать
procedure TForm_shema.Edit5Exit(Sender: TObject);
begin
square.Ymin := strtofloat(Edit5.text);
end;
вместо того, что бы сделать это в том месте, где Edit5.text тебе действительно понадобится
а если этих SpeedButton-ов много?
Сделай один метод формы, например ReadEdits, где и считывай всю инфу из едитов в свои структуры. Всё равно для каждого SpeedButton-а есть обработчик OnClick, в начале каждого и добавишь строчку ReadEdits;
← →
ghg © (2005-03-03 13:08) [25]>в том месте, где Edit5.text тебе действительно понадобится
таких мест гораздо больше чем Edit-ов
>Сделай один метод формы, например ReadEdits
возможно так и придется, только вот кроме edit-ов есть еще StringGrid и т.п., придется и их там считывать
поэтому получается что будет не самая быстрая операция
потому вопрос еще открыт
← →
ЮЮ © (2005-03-03 13:16) [26]тогда вместо ReadEdits; вставь Next; Previous; (методы формы), форсировав тем самым потерю фокуса активным контролом
← →
ghg © (2005-03-03 13:21) [27]>ЮЮ © (03.03.05 13:16) [26]
не понял
подробнее
← →
ЮЮ © (2005-03-03 13:29) [28]TForm1.BitBtn256Click(Sender: TObject);
begin
Next; // переход к следующему контролу, дабы сработал OnExit
Previous; // возврат, дабы юзверя не пугать
if
(ActiveControl is TStringGrid) and TStringGrid(ActiveControl).EditorMode
then
TStringGrid(ActiveControl).EditorMode := false;
...
<твой код>
end;
итак уже 6 строк которы лучше оформить как метод
procedure TForm1.CheckEditorMode;
begin
Next; // переход к следующему контролу, дабы сработал OnExit
Previous; // возврат, дабы юзверя не пугать
if
(ActiveControl is TStringGrid) and TStringGrid(ActiveControl).EditorMode
then
// выходим из режима редактирования в гриде
TStringGrid(ActiveControl).EditorMode := false;
end;
и вставить CheckEditorMode в начале всех твоих OnClick
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.037 c