AGB  ·  Datenschutz  ·  Impressum  







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

Timage ein Handle verpassen?

Ein Thema von richard_boderich · begonnen am 2. Jul 2005 · letzter Beitrag vom 4. Jul 2005
Antwort Antwort
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#1

Timage ein Handle verpassen?

  Alt 2. Jul 2005, 21:50
nabend Leute,

ist es moeglich timage ein handle zu verpassen??? bitte keine vorschlaege a la "leg ein trasparenten panel drueber" oder so.
Warum hatt Timage eigentlich kein Handle? ich weis es is nich von einem T-irgendwas abgeleitet darum. aber ich moechte wissen
warum das so gemacht wurde, muss doch logische grund dafür geben?

Gruß Richard.
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Timage ein Handle verpassen?

  Alt 2. Jul 2005, 21:52
ein logischer grund wäre die Transparenz. Fenster im Sinne von Windows die auf einem anderen Fenster liegen (also button etc.) können keine richtige Transparenz haben, ein TImage schon. Warum brauchst du für dein TImage unbedingt ein Handle, was hast du davon?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#3

Re: Timage ein Handle verpassen?

  Alt 2. Jul 2005, 22:15
@SirThornberry

Ich benötige das für eine tooltipanzeige über api. Denn Dephi Hint kannst vergessen.

Einpanel hatt auch ein Handle und kann sehr wohl transparent sein ,oder?

Gruß Richard
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  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: Timage ein Handle verpassen?

  Alt 3. Jul 2005, 09:59
nein, ein Panel kann nicht transparent sein. Man kann maximal verhindern das ein Panel etc (also Controls mit Handle) den Hintergrund neu painten. Allerdings sind diese nicht Transparent. DH, wenn sich der Untergrund neu zeichnet wird nicht zwangsläufig das Control darüber neu gezeichnet. Bei Controls ohne handle übernimmt das ganze zeichnen die Delphi interna...

Wenn du unbedingt TImage mit Handle benötigst dann könntest du das wie folgt umsetzen.
Öffne die Unit "ExtCtrls" und suche nach "TImage = class(TGraphicControl)". Kopiere dir den ganzen Klassenkonstruct und die Implementation in eine neuen Unit und ändere
"TImage = class(TGraphicControl)" um nach
"TImage = class(TCustomControl)".
Sei dir dabei aber auch bewusst das die Transparenzsachen dann nicht mehr funktionieren.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#5

Re: Timage ein Handle verpassen?

  Alt 4. Jul 2005, 09:49
@ Sir

Erstma THX für deine Antwort du, aber ich hab sehr wohl trasparente panels
neues form xpman drauf, timage drauf, panel auf image draufziehen . fertig
Oder ist das nicht transparent?

Gruß Richard
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  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: Timage ein Handle verpassen?

  Alt 4. Jul 2005, 19:27
das ist keine echte Transparenz, wenn du damit etwas rumexperimentierst wirst du nach ziemlich schneller zeit unschöne Effekte erkennen können weil eben teilweise untergründe nicht richtig gezeichnet werden.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Timage ein Handle verpassen?

  Alt 4. Jul 2005, 20:13
Hallo,
ich musste zwar noch nie einem TGraphicControl ein Fensterhandle verpassen. Ich habe mich aber erinnert es in den VCL-Sourcen bei TTimer schon einmal gesehen zu haben. Dort wird dem Timer ein Fensterhandle untergeschoben.
Das habe ich jetzt auf TImage angewendet und einen Nachfahren gebastelt.
Delphi-Quellcode:
unit HandleImage;

interface

uses
  Windows, Messages, SysUtils, Classes, Forms, Controls, ExtCtrls;


const

  PM_LOADIMAGE = WM_USER+1024;
    
type

  THandleImage = class(TImage)
  private
    { Private-Deklarationen }
    FWindowHandle : HWND;
    FOnLoadImage : TNotifyEvent;
    procedure WndProc(var Msg: TMessage);
  protected
    { Protected-Deklarationen }
    procedure LoadImage; virtual;
  public
    { Public-Deklarationen }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    property Handle : HWnd read FWindowHandle;
  published
    { Published-Deklarationen }
    property OnLoadImage : TNotifyEvent read FOnLoadImage write FOnLoadImage;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('MyComps', [THandleImage]);
end;

{ THandleImage }

constructor THandleImage.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FWindowHandle := Classes.AllocateHWnd(WndProc);
end;

destructor THandleImage.Destroy;
begin
  Classes.DeallocateHWnd(FWindowHandle);
  inherited Destroy;
end;

procedure THandleImage.LoadImage;
begin
  If Assigned(FOnLoadImage) then
    FOnLoadImage(Self);
end;

procedure THandleImage.WndProc(var Msg: TMessage);
begin
  with Msg do
    if Msg = PM_LOADIMAGE then
      try
        LoadImage;
      except
        Application.HandleException(Self);
      end
    else
      Result := DefWindowProc(FWindowHandle, Msg, wParam, lParam);
end;

end.
Und siehe da - man kann der Komponente mit SendMessage ein Botschaft senden.
Siehe Anlage. Evt kann man das ja auch für ein Hintwindow verwenden.
Angehängte Dateien
Dateityp: zip zip_161.zip (221,7 KB, 11x aufgerufen)
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#8

Re: Timage ein Handle verpassen?

  Alt 4. Jul 2005, 22:04
Jo Jensi, bist halt doch der beste. wer mir deine Source mal anschauen und rückmeldung geben.

Gruß

der Richard
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Timage ein Handle verpassen?

  Alt 4. Jul 2005, 22:09
@Jens: Nicht schlecht, funktioniert das ganze dann auch wenn man
procedure DoTheMessage(var AMsg: TMessage); message wm_irgendwas; macht? Das wäre ja supi. Wie ist das überhaupt, ist das handle einfach nur als dummy oder hat die Komponente dann auch ihre eigene Canvas? Also würde WindowFromPoint dann funktionieren.
Egal obs funktioniert oder nicht, find die Lösung erschreckend einfach
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  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 03:40 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