AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DLL-Form und Taskbar

Ein Thema von Mattze · begonnen am 30. Jun 2007 · letzter Beitrag vom 1. Jul 2007
Antwort Antwort
Seite 1 von 2  1 2      
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#1

DLL-Form und Taskbar

  Alt 30. Jun 2007, 15:53
Hallo,

wenn ich eine Form aus einer DLL lade, so erscheint die "normalerweise" (da Fenster) in der Taskbar von Windows. Nun gibt es dagegen (natürlich) ein Mittel:
SetWindowLong(self.Handle, GWL_EXSTYLE, GetWindowLong(self.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW ) ; Das Problem ist aber, dass ich dann bei einer ansonsten "normalen" Form einen schmalen transparenten Teil zwischen Titelzeile und Toolbar (Kein Menübar!?) bekomme. Das gefällt mir nicht.
Kann man den Streifen auch noch irgendwie beseitigen?

Gruß
Matthias
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: DLL-Form und Taskbar

  Alt 1. Jul 2007, 01:06
Hi,

Delphi-Quellcode:
  protected
    procedure CreateParams(var Params:TCreateParams); override;
...

procedure TForm1.CreateParams(var Params:TCreateParams);
begin
  inherited CreateParams(Params);
  Params.ExStyle := Params.ExStyle or WS_EX_TOOLWINDOW;
end;
So kannst du auch den Style setzen und der Streifen war bei mir weg.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#3

Re: DLL-Form und Taskbar

  Alt 1. Jul 2007, 08:39
Hallo,

vielen, vielen Dank. Genau das war's. Da hätte ich ja noch lange suchen können.

Natürlich gibt es jetzt noch eine "Anschlussfrage". (Eigentlich traue ich mich nicht richtig, weil ich selber noch nicht genug gesucht habe!)

Die Caption vom Toolwindow ist ja schmaler als die normale. Wie kriegt man die auf Normalbreite?
(Ich glaube, ich habe da mal etwas gelesen oder sogar selber gemacht, aber ich komm' einfach nicht mehr drauf! Weißt Du das zufällig aus dem Stehgreif?)

Gruß und noch mal Danke
Mattze
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: DLL-Form und Taskbar

  Alt 1. Jul 2007, 09:53
Lass das Form einfach wie es ist, es hat bereits den Style das es nicht in der Taskleiste erscheint. Jedoch gibt es noch das Application-Object welches den Taskbareintrag "verzappft" und dort musst du ansetzen.

Könntest du bitte die Delphiversion im Profil angeben, ansonsten kann es durchaus passieren das die Lösung bei dir nicht funktioniert weil nicht alle Delphiversionen das gleich händeln.

Da wie bereits werwähnt das Fenster in der Taskleiste das Application-Window ist kannst du zumindest unter D7 es wie folgt ausblenden:
ShowWindow(Application.Handle, SW_HIDE);
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#5

Re: DLL-Form und Taskbar

  Alt 1. Jul 2007, 10:34
Hallo,

danke für die schnelle Antwort.
Ich habe zwar D7pro, aber dafür kein Application-Objekt.
Die Form wird aus einer DLL heraus geladen. An sich kein Problem, aber ein Application und selbst eine "Ownerform" kann man da offenbar nicht setzen.

Inzwischen habe ich gesucht und nichts gefunden. Wie man die Höhe der Titelleiste bekommt - getsystemmetrics(SM_CYSize) - ist klar. Aber, wie man sie für eine Form und nur für diese setzt?
Das scheint doch nicht möglich zu sein.
Die einzige Variante, die ich bis jetzt gefunden habe: Keine Titelleiste und alles als Panel am oberen Rand der Form selber zeichnen. Aber das ist ein unsinniger Aufwand. Dann lasse ich es lieber so.

Gruß
Mattze
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: DLL-Form und Taskbar

  Alt 1. Jul 2007, 11:02
wenn du ein TForm hast bzw. davon abgeleitet hast, hast du auch ein Applicaiton-Object. Application ist eine globale Instanz von TApplication welche beim einbinden von forms instanziert wird.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#7

Re: DLL-Form und Taskbar

  Alt 1. Jul 2007, 11:17
Hallo,

nicht ganz!
Ich erstelle eine Form in irgendeiner Unit innerhalb einer DLL, "create" die in der DLL und zeige sie zur Laufzeit nur im Hauptprogramm an (Das create der Form liegt in einer DLL-Export-Prozedur).
Natürlich ist das Hauptprogramm eine Application, aber für die Form in der DLL existiert erst mal keine Application. Das ist ja wohl gerade der Witz und macht die DLL unabhängig von der Application.
Wenn ich die Form aus der DLL in der Application anzeigen lasse, kann ich aber die Application oder die "Rahmenform" als "aowner: TComponent" im create der DLL-Form nicht übergeben. Das gibt nach der Rückkehr aus dieser DLL-Form eine Schutzverletzung.
Ich bilde mir ein, hier im Forum doch eine Möglichkeit dafür gelesen zu haben, aber ich kann es nicht wiederfinden. Momentan geht es jedenfalls nur mit nil als owner.

Gruß
Mattze
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: DLL-Form und Taskbar

  Alt 1. Jul 2007, 11:21
das siehst du falsch. Sobald in der DLL die Unit "Forms" in irgendeiner Unterunit eingebunden wird (also sobald die unit Forms einkompiliert wird) so wird eine globale Instanz von TApplication angelegt
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#9

Re: DLL-Form und Taskbar

  Alt 1. Jul 2007, 12:37
Hallo,

glaube ich nicht. Z. Bsp. kennt er die Klasse TApplication in der DLL gar nicht. Jedenfalls kann man sie da nicht benutzen.
Ich habe KEINE Application in der DLL. Sage mir, wie ich in der DLL auf Application zugreifen kann, wenn die DLL das gar nicht kennt. Dann glaube ich Dir sogar.

Jedenfalls will ich darüber gar nicht diskutieren. Jedenfalls geht die Lösung der "Urfrage" leider nicht über Application. Jedenfalls habe ich es bisher nicht hinbekommen.

Gruß
Mattze
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: DLL-Form und Taskbar

  Alt 1. Jul 2007, 12:42
dann binde die unit "forms" doch auch an der Stelle ein wo du das ansprechen willst. ansonsten kannst du es nur an der Stelle ansprechen wo du die Unit Forms in den uses hast.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz