Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Form nicht in Taskleiste anzeigen?
DiamondDog - So 25.05.08 12:08
Titel: Form nicht in Taskleiste anzeigen?
Hallo Leute,
also ich hab Folgendes Problem, ich bekomme es entweder nur hin das meine Form nicht mehr in der Taskleiste angezeigt wird oder das es keinen Rahmen mehr hat.
Ich würd es aber gerne so haben das es nicht in der Taskleiste angeziegt wird und der Rahmen auch weg ist. Das ganze ist für eine Popup die Form enthält ein Bild und nur das Bild soll angezeigt werden.
Ich hab es schon so probiert:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm2.FormShow(Sender: TObject); begin ShowWindow(Application.Handle, SW_HIDE); end; |
aber leider hat das nicht funktioniert.
Hab auch schon im Forum gesucht aber nichts gefunden was funktioniert hat.
Hoffe ihr könnt mir da weiter Helfen.
Mfg Dog
Moderiert von
Narses: Topic aus Sonstiges (Delphi) verschoben am So 25.05.2008 um 13:04
partybear23 - Mo 26.05.08 11:16
Try this:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TMainForm.FormShow(Sender: TObject); begin showwindow(getwindow(self.handle, gw_owner), sw_hide); end; |
Gruß
Moderiert von
Gausi: Code- durch Delphi-Tags ersetzt
DiamondDog - Mo 26.05.08 11:28
Das Funktioniert leider auch nicht.
partybear23 - Mo 26.05.08 11:44
Hm also wenn ich in meinem Hauptformular nen 2. Form mache und das dann z.b mit Showmodal anzeige gibts keinen Eintrag in der Taskleiste,
ist es das was du meinst?
Vllt kannste mal deinen Code schicken, bin irgendwie ein wenig schwer von Begriff ;)
Gruß
DiamondDog - Mo 26.05.08 11:56
Also es soll kein Eintrag in der Takleiste sein und auch der Rahmen von Form 2 soll weg so das nur das image zu sehn ist.
ZeitGeist87 - Mo 26.05.08 12:01
DiamondDog hat folgendes geschrieben: |
Also es soll kein Eintrag in der Takleiste sein und auch der Rahmen von Form 2 soll weg so das nur das image zu sehn ist. |
Da hilft BorderStyle bsnone ;-)
DiamondDog - Mo 26.05.08 12:02
ZeitGeist87 hat folgendes geschrieben: |
DiamondDog hat folgendes geschrieben: | Also es soll kein Eintrag in der Takleiste sein und auch der Rahmen von Form 2 soll weg so das nur das image zu sehn ist. |
Da hilft BorderStyle bsnone ;-) |
Dann ist der Eintrag in der Taskleiste aber noch da.
Also die Form2 enthält ja ein Image und nur das soll zu sehn sein wenn Form 2 geladen wird.
Das heist kein Taskleisteneintrag und auch kein Rahmen von Form2.
Ps: Form2 = Popup
ZeitGeist87 - Mo 26.05.08 12:08
Nun ja..leider kann ich nicht compilieren, weil ich die Unit Nx<irgendwas> nicht habe ;-)
ZeitGeist87 - Mo 26.05.08 12:22
Zum Ausblenden in der Taskbar:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.FormCreate(Sender: TObject); begin ShowWindow( Application.Handle, SW_HIDE ); SetWindowLong( Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW); ShowWindow( Application.Handle, SW_SHOW ); end; |
Zum nur Anzeigen des Bildes:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure anzeigen; begin; form.borderstyle:= bsnone;
form.left:= round( (screen.width/2) - (form.width/2) ); form.top:= round( (screen.height/2) - (form.height/2) ); end; |
LG
Stefan
DiamondDog - Mo 26.05.08 12:45
Ok hab das mal so gemacht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm2.FormShow(Sender: TObject); begin Form2.Left:=Screen.WorkAreaWidth-Form2.Width+Screen.WorkAreaLeft; Form2.Top:=Screen.WorkAreaHeight-Form2.Height+Screen.WorkAreaTop;
Form2.borderstyle:= bsnone; end;
procedure TForm2.FormCreate(Sender: TObject); begin ShowWindow( Application.Handle, SW_HIDE ); SetWindowLong( Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW); ShowWindow( Application.Handle, SW_SHOW ); end; |
Also wenn alles so ist dann ist der Rahmen zwar weg aber es ist immer noch in der Taskleiste.
Ps:
Geht ShowWindow( Application.Handle, SW_HIDE ); bei FormCreate überhaupt hab irgendwo gelesen das das nicht funktioniert.
partybear23 - Mo 26.05.08 12:48
Joa dann könnteste noch das hier probieren:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| .. private { Private-Deklarationen } procedure CreateParams(var Params: TCreateParams); override; ..
procedure TForm2.CreateParams(var params: TCreateParams); begin inherited CreateParams(params); params.ExStyle := params.ExStyle or WS_EX_APPWINDOW; params.WndParent := GetDesktopwindow; end; |
DiamondDog - Mo 26.05.08 13:00
Ok hab die Procedure wieder entfernt:
Delphi-Quelltext
1:
| procedure TForm2.FormCreate(Sender: TObject); |
dafür die hier eingefügt:
Delphi-Quelltext
1:
| procedure TForm2.CreateParams(var params: TCreateParams); |
Das Hilft aber auch nicht der Rahmen ist weg aber es ist immer noch unten in der Taskleiste.
Hoffe das ihr noch ein Paar Tricks auf Lager habt.
ZeitGeist87 - Mo 26.05.08 13:46
Der Trick ist ganz einfach -.-
ist Form2 dein Hauptformular?
Nein, dann tu diesen Code einfach ins Hauptformular.
DiamondDog - Mo 26.05.08 14:14
Ok das hab ich Verstanden.
Habs so im Hauptformular eingefügt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TfmBeeperOptions.FormCreate(Sender: TObject); begin [...] begin ShowWindow( Application.Handle, SW_HIDE ); SetWindowLong( Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW); ShowWindow( Application.Handle, SW_SHOW ); end; end; |
das funktioniert nicht nur ich bin mir auch nit sicher ob das so richtig ist weil ja nirgendwo was von Form2 steht.
ZeitGeist87 - Mo 26.05.08 14:15
welches betriebssystem?
DiamondDog - Mo 26.05.08 14:41
Win XP
DiamondDog - Di 27.05.08 21:58
Weiß den keiner mehr weiter, wie ich beides wegbekommen den Rahmen der Form und aus der Taskleiste?
ZeitGeist87 - Mi 28.05.08 09:48
bei mir funktioniert das problemlos -.-
DiamondDog - Mi 28.05.08 09:57
ZeitGeist87 hat folgendes geschrieben: |
bei mir funktioniert das problemlos -.- |
Ja wenn ich einfach mal zu testen ne Form1 erstelle gehts bei mir auch.
Nur wenn ich es in mein Programm einbaue dann geht das nicht :(
Die Hauptform ist ja die fmBeeperOptions da hab ich das bei FormCreate eingefügt nur tozdem sind beiden Formen noch in der Taskleiste zu sehn.
spaxxn - Mi 28.05.08 09:59
In der Projektdatei (.dpr)
Application.ShowMainForm := False // vorm Application.Run
Im FormActivate Ereignis kommt folgendes:
ShowWindow(Handle,SW_HIDE);
ZeitGeist87 - Mi 28.05.08 10:00
beide sind sichtbar??
DiamondDog - Mi 28.05.08 10:06
@ spaxxn
Wenn ich in dir (.dpr) das einfüge:
Application.ShowMainForm := False // vorm Application.Run
Dann kann ich es nicht erzeugen
Fehler:
[Fehler] beeper.dpr(27): Undefinierter Bezeichner: 'Application'
[Fehler] beeper.dpr(27): Operator oder Semikolon fehlt
@ ZeitGeist87
ja beide sind sichtbar.
Mal neben bei:
Ich hab ein Hauptprogramm wo drann ich nichts ändern kann oder so.
Das Prog von mir ist ein Plugin.
Form2 wird geladen wenn das Plugin vom auptprogramm geladen wird.
fmBeeperOptions wird erst geöffnet wenn ich im Hauptprogramm auf Einstellungen für das Plugin gehe.
spaxxn - Mi 28.05.08 10:08
ehm, bist du Dir sicher? Wenn du mit der VCL arbeitest, sollte Application vorhanden sein.
ZeitGeist87 - Mi 28.05.08 10:09
Dann liegt das mit dem Sichtbarsein im Hauptprogramm.
Man kann in das Programm einbauen, dass alle Fenster, die geöffnet werden in der Taskleiste angezeigt werden.
Wie man das jetzt unterdrückt, kann ich dir leider nicht sagen.
LG
Stefan
DiamondDog - Mi 28.05.08 10:17
@ spaxxn
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| library Beeper;
uses u_plugin_info, u_beeper in 'u_beeper.pas', u_plugin_msg in 'u_plugin_msg.pas', Options in 'Options.pas' , BeeperClasses in 'BeeperClasses.pas', melody in 'melody.pas', HotKey in 'HotKey.pas' , NotifyImage in 'NotifyImage.pas', popup in 'popup.pas' ;
function CreateInfiumPLUGIN(PluginService: IQIPPluginService): IQIPPlugin; stdcall; begin Result := TQipPlugin.Create(PluginService); Application.ShowMainForm := False end;
exports CreateInfiumPLUGIN name 'CreateInfiumPLUGIN'; end. |
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm2.FormActivate(Sender: TObject); begin ShowWindow(Handle,SW_HIDE); end; |
Fehler:
wie oben schon gespostet.
@Zeitgeist
Hab dir mal ne SDK angehängt die ist Extra von den Programierern des Hauptprogramms zum Testen und so vll Hilft das ja weiter.
ZeitGeist87 - Mi 28.05.08 10:19
DiamondDog hat folgendes geschrieben: |
@ spaxxn
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| library Beeper;
uses u_plugin_info, u_beeper in 'u_beeper.pas', u_plugin_msg in 'u_plugin_msg.pas', Options in 'Options.pas' , BeeperClasses in 'BeeperClasses.pas', melody in 'melody.pas', HotKey in 'HotKey.pas' , NotifyImage in 'NotifyImage.pas', popup in 'popup.pas' ;
function CreateInfiumPLUGIN(PluginService: IQIPPluginService): IQIPPlugin; stdcall; begin Result := TQipPlugin.Create(PluginService); Application.ShowMainForm := False end;
exports CreateInfiumPLUGIN name 'CreateInfiumPLUGIN'; end. |
Delphi-Quelltext 1: 2: 3: 4:
| procedure TForm2.FormActivate(Sender: TObject); begin ShowWindow(Handle,SW_HIDE); end; | Fehler:
wie oben schon gespostet.
@Zeitgeist
Hab dir mal ne SDK angehängt die ist Extra von den Programierern des Hauptprogramms zum Testen und so vll Hilft das ja weiter. |
1. Da es eine Library ist, gibt es keine Application ;-)
2. Wo? ^^
DiamondDog - Mi 28.05.08 10:21
2. Siehe oben :)
ZeitGeist87 - Mi 28.05.08 10:27
Die SDK bringt doch nix ;-)
Die ist für dich als Pluginentwickler gedacht.
Wenn die Programmierer des Hauptprogrammes es so wollten, dass die anderen Fenster in der Taskleiste angezeigt werden, musst dich dem beugen - egal, ob du es unterdrücken willst ;-)
Mir fällt keine Hilfestellung mehr diesbezüglich ein.
Tut mir leid.
LG
Stefan
DiamondDog - Mi 28.05.08 10:29
Hm.. ich weiß aufjedenfall das es bei andern Plugins
Funktioniert die haben auch eine Popup Funktion drin,
ich schau mal ob ich eine ohne Pw finde ansonsten wird das schwer.
Aber Trozdem schon mal Danke.
spaxxn - Mi 28.05.08 10:41
Entweder habe ich es überlesen oder ich weiss auch nicht, aber in einer Library funktioniert das so auch nicht.
DiamondDog - Mi 28.05.08 13:10
Hm.. Ok werd wohl damit leben und mal sehn was sich machen läst damit es gut aussieht. :)
Ich hätte da noch ne kleines problem:
Und zwar hab ich das Problem,
das wenn ich so meine Form2 aufrufe:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TQipPlugin.LoadPopup; begin Form2.Show; Form2.Left:=popup_X; Form2.Top:=popup_Y; [...] |
die Form von oben links anfängt.
Wie bekomme ich es hin das die Form von unten rechts anfängt?
Edit:
hab schon die Lösung gefunden:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TQipPlugin.LoadPopup; begin Form2.Show; Form2.Left:=Screen.WorkAreaWidth-Form2.Width+Screen.WorkAreaLeft-popup_X; Form2.Top:=Screen.WorkAreaHeight-Form2.Height+Screen.WorkAreaTop-popup_Y; [..] |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!