delphi форма без фокуса

Какая процедура отвечает за потерю фокуса формы?

доброе время все,
столкнулся с такой проблемой

есть форма и дочерние окна, нужно что бы форма и дочерние окна были по верх всех окон,использую,
таймере

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Запретить форме потерю фокуса
Есть главная форма и есть 2 дочерние с border = none. Одна хранит только один контрол, другая.

tickКакое событие формы отвечает на попадание фокуса к данному приложению?
Всем здравствуйте. Переключаюсь со стороннего приложения Windows на своё, например щёлкая по.

Как можно запретить потерю фокуса?
Основной поток создаёт 2 окна, в первом постоянно происходят изменения(например сдвиг статус бара).

1.пользователи проклянут автора. и поделом.

2.чем вас не устроило это

Раньше было можно было творить такую хрень. По средствам SetFocys() и его аналогов, но в Vista и выше, Microsoft запретила перехват фокуса, а потеря фокуса это значит что уже что-то в фокусе, поэтому тоже перехват. к сожалению твое желание очень тяжело осуществимо. У меня в загашнике есть функция которая обходит это правило, но что-то я подозреваю что данная разработка может принести не мало вреда пользователю.

Фокус, это как любовь. Любовь забрать нельзя, ей могут поделится.

Если тебе чем то поможет, то ты можешь допустим фоново вызвать блокнот и с него передать фокус на себя (Это извращенный метод) =)

Источник

Программирование на Delphi

Событие при потере и установке фокуса для формы

Анимация форм при сворачивании и разворачивании

Временно запретить форме перерисовываться

Временно запретить форме перерисовываться 2

Вывести окно на передний план

Динамическое создание формы

До динамического создания формы узнать, существует ли она

Заблокировать перемещение формы

Закрыть форму с анимацией

Замена Form на FormIni

Заполнение фона формы рисунком 2

Из региона формы вычитается регион надписи

Изменить оконную процедуру для TForm

Как найти окно по неполному названию

Как получить дескриптор текущего окна

Как сделать так, чтобы окно было во весь экран

Как создать новую форму, которая бы не отбирала фокус у существующей

Косвенный вызов формы

Менять главную форму во время выполнения

Минимизирование формы при запуске

Можно ли заблокировать обновление определенного окна

Можно ли рисовать на рамке формы

Можно ли создать форму, которая получает дополнительные параметры в методе Сreate

Найти количество дескрипторов форм, используемых вашим приложением

Наполовину активное окно

Наставляем мышь на окно, и оно выносится на передний план

Не закрывающееся окно

Не работает fsStayOnTop

Ограничение на изменение размера формы по размеру панели на ней

Освобождение экземпляров формы

Открытие формы с анимацией

Передача переменных форме

Переопределение оконной процедуры и метода для другой формы

Переопределить параметры формы при её создании

Перечислить формы и дочерние формы

Показ формы без фокуса

Показывать содержимое формы при перетаскивании

Полезные команды для редактирования формы

Полноэкранный режим формы

Получение родительской формы компонента

Получить информацию обо всех формах проекта

Получить позицию активного окна

Последовательность событий жизненного цикла формы

Постоянно держать форму на заднем плане

Предохранить форму от сворачивания

Проверить, содержит ли окно набор Unicode символов

Просмотреть текст формы

Просмотреть текст формы из запущенной программы

Разукрасить свою форму

Режимы разрешения для формы

Рождение, жизнь и гибель формы

Сделать форму меньше 112 пикселей

Событие при потере и установке фокуса для формы

Создание окна в виде бублика

Создание формы на основе строки

Создание формы переменного типа

Создать форму с закругленными краями

Убирать бордюр формы при перемещении

Удалить кнопки сворачивания и максимизации с формы

Источник

Delphi форма без фокуса

Свойства TForm
Класс TForm предоставляет возможность изменять его поведение и внешний вид формы с помощью ряда свойств.

procedure TDataEntryForm.FormCloseQuery(Sender: Tobject;
var CanClose: Boolean);
begin
<Проверяем, введен ли текст в элемент.>
if edtCustName.Text = ‘ ‘ then
begin
<Запрещаем закрытие.>
CanClose:= False;
(Устанавливаем фокус в поле с некорректными данными.)
ActiveControl:= editCustName;
end;
end;

Совет: Метод SetFocus потомков TWinControl устанавливает фокус ввода и обновляет свойство ActiveControl. Большинство событий передает параметр Sender своему обработчику. Sender определяет, какой элемент обнаружил событие и запустил обработчика.

BorderIcons
Свойство Borderlcons представляет собой набор логических значений, использующийся для определения набора пиктограмм в заголовке формы.
Значения biMinimize и biMaximize создают пиктограммы, которые позволяют свернуть и развернуть форму с помощью мыши.

Совет: Для того чтобы значения biMinimize и biMaximize работали, необходимо установить свойство Bo rderStyle равным bsSizeable или bsSizeToolWin.

Значение biHelp выводит кнопку с вопросительным знаком. Щелчок на ней вызывает контекстно-зависимую справку, которая выводится, как текст подсказки Hint, т.е. без вызова Windows Help. На рис. 1.1 представлена такая кнопка. Im15Рис. 1.1. Доступ к контекстно-зависимой справке можно получить с помощью щелчка на кнопке с вопросительным знаком в заголовке формы.

Значение biSystemMenu создает слева от заголовка пиктограмму, позволяющую вызывать системное меню, как показано на рис. 1.2.

Im16Рис. 1.2. Системное меню позволяет перемещать и закрывать форму, а также изменять ее размеры.

Совет: Для того чтобы значения biMinimize, biMaximize и biHelp работали, необходимо присвоить свойству заметку BorderIcons значение biSystemMenu.

BorderStyle
Свойство BorderStyle перечислимого типа позволяет определить:

Совет: Значения biMinimize и biMaximize свойства Borderlcons не будут работать, если свойство BorderStyle установлено равным bsDialog.

Панель инструментов (Toolbar) позволяет быстро получить доступ к сгруппированным функциям. В Delphi можно сконструировать панель инструментов, поместив группу компонентов TSpeedButton в форму, имеющую стиль bsSizeToolWin или bsToolWindow. Окно в стиле bsSizeToolWin может изменять размеры и не имеет кнопок biMinimize, biMaximize HbiHelp. Окно в стиле bsToolWindow действует так же, но не позволяет изменять размеры.
Стиль bsNone создает окно без рамки и заголовка. Такое окно не рекомендуется использовать в качестве стандартного или диалогового, однако оно может быть полезным в программах сохранения экрана или заставках.

Совет: Если вы выбрали для свойства BorderStyle значение, создающее окно с разрешенным изменением размеров, Delphi автоматически установит значение AutoScroll равным True. Формы со стилями bsDialog и bsNone не могут иметь строки меню.

Height и Width
Эти свойства определяют высоту и ширину формы в пикселях и обычно используются для изменения размеров формы во время работы на дисплеях разной разрешающей способности. Вот пример увеличения размеров формы до размеров всего экрана.

<Перемещаем форму в верхний левый угол экрана.>
Left:= 0;
Тор:= 0;
(Изменяем размеры формы.)
Width:= Screen.Width;
Height:= Screen.Height;

(Класс TScreen, о котором будет сказано ниже, и его экземпляр Screen предоставляют доступ к информации о размерах всего экрана.)
Приведенный код, конечно, работает, но плохо, так как требуется четыре обновления формы. На самом деле лучше использовать метод SetBounds, определенный у потомков TWinControl:

SetBounds(0, 0, Screen.Width, Screen.Height);

with imgPicture.Picture do
begin
(Изменение размера.)
ClientWidth:= Width;
ClientHeight:= Height;
end;

Не клиентская область обычно прорисовывается Windows и включает строку заголовка, меню и рамку окна. Вы можете рисовать в этой части окна, перехватив сообщение WM_NCPAINT.

procedure TFormI.mnuAlwaysOnTopClick(Sender: TObject);
begin
with mnuAlwaysOnTop do
begin
<Переключаем отметку выбора пункта меню.>
Checked:= not Checked;
<Проверка установок меню.>
if Checked then
(Устанавливаем стиль fsStayOnTop.)
FormStyle:= fsStayOnTop
else
<Возвращаем нормальный стиль.>
FormStyle:= fsNormal;
end;
end;

Совет: Изменение свойства FormStyle вызывает событие OnShow.

Icon
Свойство Icon определяет пиктограмму, выводимую Windows при сворачивании вашей формы. В интерфейсе Windows 95 эта пиктограмма также выводится в левом верхнем углу формы на кнопке системного меню. Если вы не определите значения для этого свойства, будет использоваться свойство Icon глобального объекта Application.

Совет: Поскольку клавиша Tab> используется для передачи фокуса другому управляющему элементу, она не вызывает генерации события.

Обычно свойство используется KeyPreview для обработки функциональных клавиш, которые должны быть переданы форме независимо от текущего активного элемента.
Без этого свойства обработка функциональных клавиш сводится к написанию для каждого элемента дополнительного обработчика, который должен отслеживать нажатие функциональных клавиш. Более элегантным является использование разделяемого обработчика событий, так что лучше всего применять свойство KeyPr e ssed.
При этом все нажатия клавиш отсылаются обработчикам событий OnKeyDown, OnKeyUp и OnKeyPress автоматически и для «отлова» функциональной клавиши надо написать только один обработчик события OnKeyDown формы. Вот пример закрытия формы при нажатии клавиши

procedure TFormI.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState):
begin
<Проверить, нажата ли клавиша
if Key = VK_F2 then
<Закрыть форму.>
Close;
end;

Рассматривая принцип работы этого кода, имейте в виду, что события OnKeyDown и OnKeyUp используют виртуальные коды (все они перечислены в файле WI NDOWS.PAS).

Menu
Это свойство определяет компонент TMainMenu, который предоставляет главное меню формы. Свойство Menu позволяет сделать меню контекстно-зависимым и часто используется в OLE-приложениях при замене вашего исходного меню на меню приложения-сервера. На рис. 1.5 показан документ Wordpad с внедренным объектом MediaClip. Обратите внимание, что меню и панель инструментов при этом те же, что и у Media Player. Im24Рис. 1.5. Вы можете создать контекстно-зависимое меню с помощью свойства Menu

Для изменения свойства Menu просто присвойте ему новое значение (TMainMenu или его потомок):

procedure TForml.FormDestroy(Sender: TObject);
var
sAppPath: String;
iniSettings: TINIFile;
begin
<Получить путь к ЕХЕ-файлу приложения.>
sAppPath:= ExtractFilePath(Application.EXEName);
<Создаем объект TINIFile.>
iniSettings:= TINIFile.Create(sAppPath + ‘SETTINGS.INI’);
try
<Записываем свойства в INI-файл.>
iniSettings.Writelnteger(Name,’Left’,Left);
iniSettings.Writelnteger(Name,’Top’,Top);
iniSettings.Writelnteger(Name,’Width’,Width);
iniSettings.Writelnteger(Name,’Height’,Height);
finally
iniSettings.Free;
end;
end;

Совет: Для компиляции примера не забудьте включить в раздел uses модуль INIFiles.

После выполнения кода ваш INI-файл будет содержать нечто вроде

[Form1]
Left=108
Тор=174
Width=540
Height=165

Заметьте, что для строки раздела используется свойство Name вашей формы.
Восстановить положение формы на экране немного сложнее (главным образом из-за того, что следует отработать ситуацию, когда INI-файла нет).

WindowState
Свойство перечислимого типа WindowState определяет состояние окна- свернутое, развернутое или нормальное. По умолчанию оно имеет значение wsNormal (при этом окно выводится в состоянии, определяемом свойствами Position, Left, Top, Height и Width). Чтобы свернуть или развернуть форму, используются значения wsMinimize и wsMaximize.

События TForm
Класс ТForm добавляет несколько событий к родительскому классу TWinControl. Эти события позволяют изменять поведение формы путем выполнения загрузки и сохранения информации о состоянии формы или распределения и освобождения дополнительных ресурсов.
Когда форма создается и отображается, происходит пять следующих событий.

1. OnCreate запускается при создании формы и позволяет распределять ресурсы и инициализировать форму.
2. OnShow происходит непосредственно перед выводом формы на экран. К этому времени все элементы управления и компоненты созданы и инициализированы.

Совет: Хотя к тому моменту, когда происходит событие OnShow, форма еще не видна, свойство Visible установлено равным True.

3. OnResize генерируется при изменении размера формы во время выполнения приложения. Обычно здесь помещается код для изменения размера и положения на экране элементов управления, не поддерживающих свойство Align. Событие OnResize также однократно генерируется при создании формы, когда Delphi устанавливает начальные размеры формы.

Совет: OnResize вызывается неоднократно в процессе изменения размеров формы.

Совет: Событие OnCreate происходит один раз за все время существования формы, прочие же события могут вызываться неоднократно.

При закрытии и уничтожении формы также генерируется пять следующих событии.

1. OnCloseQuery генерируется в ответ на действия, закрывающие форму. Обработчик получает логическую переменную CanClose, определяющую, может ли форма быть закрыта. По умолчанию она имеет значение True, но если вы в обработчике установите False, форма останется открытой. Обычно это используется для сохранения не сохраненных файлов или для подтверждения закрытия формы. Вот пример такого кода.

procedure TFormI.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
CanClose:= MessageDIg(‘Close form?’, mtConfirmation,
[mbYes,mbNo], 0) = mrYes;
end;

2. OnClose генерируется непосредственно перед закрытием формы. Обычно оно используется для изменения стандартного поведения формы при закрытии. Для этого Delphi передает в обработчик события переменную Action, которая может принимать одно из четырех значений: caHide, caMinimize, caNone или caFree. По умолчанию для не MDI-форм используется caHide, скрывающее форму. Для дочерних MDI-форм значение по умолчанию, сворачивающее форму, равно caMinimize. Если Action установлено равным caNone, закрытия не происходит. caFree заставляет Delphi закрыть форму и освободить всю связанную с ней память. Если после этого сослаться на объект формы, произойдет исключительная ситуация.

Совет: OnClose вызывается только при закрытии формы с помощью щелчка на кнопке закрытия или вызова функции Close. Если вы закрываете главную форму приложения, все другие открытые формы закрываются без вызова события OnClose. Событие OnCloseQuery вызывается всегда, независимо от способа закрытия формы.

3. OnDeActivate происходит при потере формой фокуса ввода. Запуск происходит по тем же правилам, что и запуск события OnActivate.
4. OnHide запускается непосредственно перед тем, как форма станет невидимой.

Совет: Хотя при вызове OnHide форма еще видна, ее свойство Visible установлено равным False.

5. OnDestroy генерируется непосредственно перед уничтожением формы. Обычно оно используется для освобождения ресурсов, выделенных в OnCreate.

Совет: Событие OnDestroy вызывается только один раз за все время существования формы, прочие события могут вызываться неоднократно.

Повторное использование форм
К этому моменту вы уже должны быть хорошо знакомы с объектно-ориентированной природой Delphi. Поскольку TForm представляет собой класс, он может повторно использоваться, расширяться и изменяться. Повторное применение форм поддерживается через шаблоны форм и наследование. Оба эти метода используют Object Repository

Шаблоны форм
Шаблоны форм (Form Templates) предоставляют основу для новой формы. По одной заготовке можно создать несколько форм. В Delphi есть хранилище объектов (Object Repository), в котором содержится множество различных шаблонов форм, диалогов и проектов.

Использование шаблонов форм
Приведенные ниже опции позволяют использовать шаблоны форм.

Добавление собственного шаблона
Хотя имеющиеся шаблоны весьма полезны и хорошо сделаны, для продолжительной профессиональной работы их будет недостаточно. Наверняка нужно будет что-либо доработать или создать новую форму, которую можно было бы использовать в других приложениях. Чтобы не делать одну и ту же работу дважды (трижды, восемьюжды. ), создайте шаблон формы и поместите его в хранилище объектов.

Совет: Delphi автоматически включает вновь созданные формы в текущий проект. Они связаны с проектом, как
будто вы воспользовались опцией Use.

Разделяемое хранилище
Вам может не понравиться то, что ваши шаблоны содержатся в хранилище Delphi. Предположим, что вы де инсталлируете Delphi (при этом, чтобы сохранить свои шаблоны, вы будете вынуждены вручную сохранять их в другом месте, а потом вновь добавлять их в очередное хранилище). Или, например, вы работаете в сетевом окружении и хотите поделиться своими формами с другими программистами. Обе эти проблемы позволяет решить концепция разделяемого хранилища.
Разделяемое хранилище (shared repository) представляет собой папку с двумя файлами, используемыми для хранения информации о расположении шаблонов. Вы можете определить расположение разделяемого хранилища, выполнив следующие действия.

После того как разделяемое хранилище определено, вы вольны в выборе места хранения своих шаблонов.

Управление хранилищем объектов
После добавления шаблона в хранилище вы вдруг обнаруживаете, что совсем забыли внести в него последние исправления. Вы можете сделать это, используя диалоговое окно Object Repository, показанное на рис. 1.9. Для его вызова воспользуйтесь командой Tools/Repository.
В списке Pages, расположенном слева в диалоговом окне, перечислены страницы, выводимые в диалоговом окне New Items. Управлять этим набором можно с помощью кнопок Add Page, Delete Page и Rename Page. Im27Рис. 1.8. Опция Shared Repository позволяет определить разделяемое хранилище шаблонов Im28Рис. 1.9. Использование диалогового окна Object Repository для работы с шаблонами

Выбор страницы из списка приводит к заполнению списка Objects объектами, содержащимися на этой странице. Если вы выберете элемент [Object Repository], будут показаны все объекты в хранилище. Вы можете перемещать объекты путем их перетаскивания из списка Objects на нужную страницу в списке Pages.
Кнопка Edit Object позволяет вывести диалоговое окно Edit Object Info, показанное на рис. 1.10. С его помощью можно редактировать свойства объекта в любой момент.
Кнопка Delete Object удаляет объект из хранилища, но не удаляет его файлы с диска.
Переключатели, расположенные внизу диалогового окна, выполняют две задачи. Первый переключатель. New Form, позволяет определить шаблон, используемый при создании новой формы. Второй, Main Form, определяет шаблон, используемый для построения главной формы при создании нового приложения. Для назначения соответствующих шаблонов просто выберите объект из списка Obje c ts и отметьте нужную опцию.
Im29Рис. 1.10. Редактировать свойства объекта можно в хранилище с помощью диалогового окна Edit Object Info

Если вы выбираете проект, а не форму, диалоговое окно заменит переключатели новыми переключателями New Project. Он позволяет определить шаблон проекта, используемый при создании нового приложения.

Наследование форм
Наследование форм воплощает лучшие возможности повторного использования форм Use и Copy. При копировании вы создаете дубликат формы и добавляете в него необходимые компоненты и код. Неудобство этого метода состоит в том, что изменения не вносятся в шаблон. При использовании Use изменения вносятся не только в шаблон, но и во все объекты в других проектах.
Наследование позволяет создать множество экземпляров шаблона, которые могут отличаться один от другого, как при использовании Copy. Оно так же автоматически вносит изменения в объект хранилища, как и при использовании Use.

Использование наследования форм
В хранилище объектов содержится несколько примеров наследования форм. Для того чтобы наследовать одну форму из другой, выполните следующие действия.
Выберите команду File/New Application. При этом появится пустое приложение.

ПРЕДОСТЕРЕЖЕНИЕ: Две родительские формы, OKHelpRightDIg и OKRightDlg, связываются с проектом так же, как и опция Use, поэтому, решив их изменить, вы измените объекты, хранящиеся в Object Repository.

Цепочка наследования отражена в автоматически генерируемом коде. Описание класса OKHelpRightDlg2 выглядит так.

Совет: Описание класса или типа начинается с буквы Т.

Это объявление не назовешь чересчур информативным. Поскольку вы не добавляли ни новых компонентов, ни кода, OKHelpRightDlg2 не определяет ни новых свойств, ни методов или событий. Определение класса TOKHelpRightDIg несколько интереснее.

TOKHelpRightDIg = class (TOKRightDIg)
HelpBtn: TButton;
procedure HelpBtnClick(Sender: TObject);
private
<Закрытые объявления.>
public
<Открытые объявления.>
end;

Как вы можете видеть, OKHelpRightDIg получает компоненты и код от OKRightDIg и добавляет объект HelpBtn типа TButton, а также обработчик события HelpBtnClick.

Преимущества наследования форм
Как уже упоминалось ранее, преимущества наследования форм заключаются в возможности добавления новых компонентов и кода в объект и наличии связи с оригиналом шаблона в хранилище. Если вы изменяете шаблон, наследуемый объект будет автоматически обновлен. Выполните следующие действия.
Выберите команду File/New Application, и появится пустое приложение.

Теперь приступим к демонстрации. Переместите шаблонную форму в нижнюю часть главного окна Delphi. Вы обратили внимание, что новая форма OKRightDlg2 не открылась? Это связано с тем, что Delphi обновляет свойства Left и Тор одновременно с изменением соответствующих родительских свойств.
Однако в обратном направлении изменения не передаются. Чтобы убедиться в этом, выполните следующие действия.

При перемещении диалога-наследника на экране диалогородитель будет оставаться на месте, что иллюстрирует передачу свойств только в одном направлении.

Источник

Убрать фокус с MessageDlg

Убрать фокус кнопки
В программе есть несколько кнопок. Сначала ни одна из них фокуса не имеет, но если на одну из них.

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

Как убрать фокус с ListBox?
В программе Delphi для FMX в строке ListBox1.ItemIndex:=-1 Возникает ошибка. Как другим способом.

Но при появлении диалога, по умолчанию фокус будет находиться на кнопке «Нет».

В таком варианте использования Message Box тупо стучать по кнопке Enter не получится.

всем бы велосипед изобретать

предлагаю использовать TTaskDialog

Одно дело читать лиц. соглашение, другое, когда на производстве, выскакивает окошечко с важной информацией и пользователь при заполнении формы ткнул «окай» и дальше заполняет формуscratch one s head

А так большое всем спасибо, всё что хотел знать, то что нельзя снять фокус, ответ получил)

Написал свой кастомный диалог с одной кнопкой без фокуса на ней good3

tickКак программно убрать фокус с компонента
Вариант Form1.ActiveControl:= 0; не компилируется. Может быть это можно сделать для компонента с.

tickКак убрать фокус
При нажатии на input оно выделяется цветом, как сделать так чтобы этт цвет вообще исчез

убрать фокус с кнопки
проблема в следующем. во фрэймовой системе есть страница menu-фрэйм выбора типов.

Убрать фокус у кнопок
подскажите как сделать кнопки без фокуса?

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • delphi фон на форме
  • delphi таблица excel на форме