AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi TGraphicControl aud MDI-Client Fenster
Thema durchsuchen
Ansicht
Themen-Optionen

TGraphicControl aud MDI-Client Fenster

Ein Thema von GreyGoo · begonnen am 21. Okt 2006 · letzter Beitrag vom 22. Okt 2006
Antwort Antwort
GreyGoo

Registriert seit: 2. Okt 2006
5 Beiträge
 
#1

TGraphicControl aud MDI-Client Fenster

  Alt 21. Okt 2006, 20:42
Hi Leute,

Ich arbeite mit einer TMS THotspotImage-Komponente (eine Bitmap mit Maus-sensitiven Bereichen, die angeklickt werden können, von TGraphicControl abgeleitet) und möchte diese als Background in einer MDI-Application verwenden.

Problem:
wenn ich ein TGraphicControl, zb TSpeedButton, auf ein MDI-Client Fenster (FormState=fsMDIForm) setze, so werden keine Maus-Events mehr an die TGraphiControl-Komponente weitergeleitet; ein TSpeedButton zB ist tot, er kann nicht mehr angeklickt werden.

Wie kann ich das verhindern, bzw gibt es da einen Workaround ?
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#2

Re: TGraphicControl aud MDI-Client Fenster

  Alt 21. Okt 2006, 20:48
Hallo,
willkommen in der DP!

So ähnlich hatten wir hier das schon mal: MDI-Anwendung und Panel.
Welche Delphi Version hast Du?

Versuche die GraphicControl auf ein Panel zu setzen.
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
GreyGoo

Registriert seit: 2. Okt 2006
5 Beiträge
 
#3

Re: TGraphicControl aud MDI-Client Fenster

  Alt 22. Okt 2006, 01:38
Ich arbeite mit D7.
Auf ein Panel kann ich das TGraphicControl nicht legen, da dann das Panel immer im Vodergrund ist und die Child-Fenster verdeckt. Eine Graphic im Client-Bereich anzuzeigen ist mit D7 problemlos möglich, aber damit ist mir nicht geholfen; eine Graphic, zb TImage, ist 'passiv' und braucht nicht auf Maus-Events zu reagieren.
Ich brauche aber ein 'aktives', auf Maus-Events reagierendes Control. Ich weiss nicht warum die Maus-Events grundsätzlich nicht zum TGraphicControl durchkommen. Eine TButton funktioniert im MDI-Client Bereich tadellos, ist leider aber immer im Vodergrund.
Es muss da doch 'ne Lösung geben.
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#4

Re: TGraphicControl aud MDI-Client Fenster

  Alt 22. Okt 2006, 02:13
Ein TGraphicControl ist Quasi ein Pseudofenster, welches auf dem Parent eingehakt ist.
Was meinst Du jetzt mit passiv und aktiv?

Wenn Du meinst, das es den Fokus, so wie zB TButton erhalten soll, dann kannst Du nicht TGraphicControl als Ausgangsklasse verwenden.
Da wäre dann ein CustomControl oder ähnliches angebracht.

Ansonsten können auch GraphicControls auf MouseMove, MouseUp & MouseDown reagieren.

Möglicherweise sind in D7 die Fehler bei den MDI Styles noch nicht ganz ausgebügelt.

Edit: Gerade probiert: Die MouseEvents bei GraphicControls funktionieren bei D5, obwohl sie nicht sichtbar sind
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
GreyGoo

Registriert seit: 2. Okt 2006
5 Beiträge
 
#5

Re: TGraphicControl aud MDI-Client Fenster

  Alt 22. Okt 2006, 04:02
Ja, TGraphicControls reagieren auf Maus-Events, siehe TSpeedButon, aber leider nicht wenn sie auf einer Form mit FormStyle=fsMDIForm (MDI-Client) sind. Setze ich auf die MDI-Form ein Panel und darauf zb einen TSpeedbutton, dann sollte wohl alles richtig sein, aber dann ist das Panel immer im Vordergrund und überdeckt alle MDI-Child-Fenster.
TPanel und TButton sind von TWinControl abgeleitet und haben ein eigenes FensterHandle, während TGraphicControl von TControl abgeleitet ist und somit über kein eigenes FensterHandle verfügt. Eigentlich macht ein TGraphicControl nichts weiter als auf dem Canvas seines Parent was zu zeichnen. Damit ein TGraphicControl überhaupt auf Maus-Events reagieren kann, werden von der VCL die Maus-Events vom Parent des TGraphicControls an das TGraphicControl weitergeleitet und dort ausgewertet, siehe TSpeedButton. Sitzt das TGraphicControl aber auf einer Form mit FormStyle=fsMDIForm (die MDI-Form ist in diesem Fall das Parent des TGraphicControls), so scheint dieser Mechanismus zu versagen.
  Mit Zitat antworten Zitat
GreyGoo

Registriert seit: 2. Okt 2006
5 Beiträge
 
#6

Re: TGraphicControl aud MDI-Client Fenster

  Alt 22. Okt 2006, 04:13
PS:
habe gerade gesehen, dass bei TSpeedButton zumindest ein OnClick-Event durchkommt, aber der Button erscheint nicht gedrückt. Auch das Verhalten bei TSpeedButton.Flat=true funkioniert nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#7

Re: TGraphicControl aud MDI-Client Fenster

  Alt 22. Okt 2006, 16:32
Zitat von GreyGoo:
Sitzt das TGraphicControl aber auf einer Form mit FormStyle=fsMDIForm (die MDI-Form ist in diesem Fall das Parent des TGraphicControls), so scheint dieser Mechanismus zu versagen.
Also bei mir funkt das bei D2 und D5

Wenn Du einem Panel den Wert Align zB auf alTop setzt, dann liegen die anderen Fenster nicht darunter.
Eine andere Lösung fällt mir (zumindest im Moment) nicht ein.
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:10 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