vprašanje glede Form

Vse drugo, kar ne spada v nobeno zgornjo kategorijo.
Odgovori
provincjal
Prispevkov: 6
Pridružen: 06.08.2008 14:29:36

vprašanje glede Form

Odgovor Napisal/-a provincjal » 16.02.2010 14:16:32

Pozdravljeni,

imam eno vprašanje. Verjetno samo ne vem kakšen bi bil naziv za to, in zato tudi ne najdem rešitve na googlu.

No težava je v temu da želimo predelati obstoječo aplikacijo iz modal na non-modal. In sedaj ko recimo odpreš novo formo

NewFrom.Show();

lahko prestavljamo med formami, vendar do druge kreirane forme ne morem dostopati preko alt + tab. Sj verjetno vsi veste kaj mislim s tem, samo se ne znam pravilno izrazit. :)

LP

Uporabniški avatar
Runner
Prispevkov: 1079
Pridružen: 03.02.2005 12:05:25

vprašanje glede Form

Odgovor Napisal/-a Runner » 16.02.2010 16:54:35

Z ALT + TAB lahko dostopaš samo do TOP oken aplikacij. Te so ponavadi tudi tisti ki jih vidiš v TaskBar-u. Imaš dve opciji.

- Formam v construktorju povoziš nastavitve da postanejo TOPMOST okna in da so vidna v TaskBar-u. Kode zato je na netu ogromno.
- Uporabiš "tabbed" pristop, kjer je vsaka forma svoj tab v programu. Ko ima program fokus se z določeno kombinacijo tipk sprehajaš med tabi. Lahko narediš še kaj več v smislu iskanja.

provincjal
Prispevkov: 6
Pridružen: 06.08.2008 14:29:36

vprašanje glede Form

Odgovor Napisal/-a provincjal » 17.02.2010 09:11:20

hvala za odgovor

sicer topmost ni čisto to kar sem iskal, vendar sem s pomočjo tega našel rešitev.

in sicer je potrebno v definicijo dodati

private
procedure CreateParams(var Params: TCreateParams); override;

in nato proceduro

procedure TSingleNonModalForm.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do begin
ExStyle := ExStyle or WS_EX_APPWINDOW;
WndParent := GetDesktopwindow;
end;
end;


to je vse :)

Uporabniški avatar
Runner
Prispevkov: 1079
Pridružen: 03.02.2005 12:05:25

vprašanje glede Form

Odgovor Napisal/-a Runner » 17.02.2010 09:27:21

Ja, saj naredil si točno to kar sem ti predlagal pod prvo možnostjo. Samo da se mi ni dalo še kode iskati. Saj sem rekel da je tega polno na netu.

In da:

-> ExStyle := ExStyle or WS_EX_APPWINDOW ti omogoči da je forma (okno) prikazana v taskbar-u
-> WndParent := GetDesktopwindow pa dodeli kot parenta desktop okno, kar je tudi pogoj da je to okno samostonjno in torej zmožno prikaza v task-bar-u.

Topmost ni bil pravi izraz se strinjam. Sem prehitro napisal odgovor. :D
Zadnjič spremenil Runner, dne 17.02.2010 09:27:45, skupaj popravljeno 1 krat.

Odgovori