Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Probleme mit Property einer Komponente (https://www.delphipraxis.net/34127-probleme-mit-property-einer-komponente.html)

Helmi 17. Nov 2004 20:18


Probleme mit Property einer Komponente
 
Hallo,

ich weiss mir keinen Rat mehr :wall: :wall: :wall:

Ich habe eine Komponente die als Property ein Icon hat (guckst du Code):

Code:
    property Icon: TIcon read FIcon write SetIcon;
Wobei gilt:
Code:
private
  FIcon: TIcon;
  procedure SetIcon(Value: TIcon);

{...}


procedure TTrayIcon.SetIcon(Value: TIcon);
begin
  //Wird aufgerufen, wenn sich die Variable "FIcon" ändert
  FIcon.Assign(Value);

  ModifyIcon;
end;
Eigenartiger weise wird die Procedure SetIcon nicht "durchlaufen".
Festgestellt hab ich es, indem ich einfach mal eine showmessage('hallo'); eingebaut hab.

Weiss jemand warum die Procedure ned durchlaufen wird?

mfg
Helmi

jfheins 17. Nov 2004 20:23

Re: Probleme mit Property einer Komponente
 
Ich würde schatzen, du musst statt
Delphi-Quellcode:
  FIcon.Assign(Value);
folgendes schreiben
Delphi-Quellcode:
SetIcon (Value);
Damit nicht einfach die Variable geändert wird, sondern Funktion dazu auch aufgerufen wird ...

Helmi 17. Nov 2004 20:25

Re: Probleme mit Property einer Komponente
 
ne - hat auch nix gebracht

glkgereon 17. Nov 2004 20:38

Re: Probleme mit Property einer Komponente
 
gabs da keinen fehler????

also ma logisch...

bei dem code:

Delphi-Quellcode:
private
  FIcon: TIcon;
  procedure SetIcon(Value: TIcon);


procedure TTrayIcon.SetIcon(Value: TIcon);
begin
  //FIcon.Assign(Value);
   SetIcon(Value);
end;
sollte sich eigentlich so einiges aufhängen :gruebel:


kannst du net sagen FIcon:=Value;?

jfheins 17. Nov 2004 20:39

Re: Probleme mit Property einer Komponente
 
Achso .... Das ist ja schon die Prozedur seticon ...

Poste mal ein bisschen mehr Code, z.B. die ganze Klassendeklaration ...

Helmi 17. Nov 2004 20:43

Re: Probleme mit Property einer Komponente
 
ich schätze mal du willst das sehen (guckst du):


Code:
unit TrayIcon;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Menus, ShellApi, ExtCtrls, Dialogs, StdCtrls, Variants;

const
  IconID       = 100;
  WM_TRAYNOTIFY = WM_USER + 1024;
  TRAY_CALLBACK = WM_USER + 20;

type
  TBalloonTipFlags     = (BT_Info, BT_Warning, BT_Error, BT_WinSymbol, BT_Question);
  TBalloonTipDirection = (BT_Left, BT_Middle, BT_Right);

  TTrayIcon            = class(TComponent)
  private
    { Private-Deklarationen }
    IconData             : TNotifyIconData;

    FBalloonTip          : TForm;
    FLabelInfo           : TLabel;
    FLabelTitle          : TLabel;
    FFlagImage           : TImage;
    FForegroundTimer     : TTimer;

    FBalloonTipFlags     : TBalloonTipFlags;
    FBalloonTipDirection : TBalloonTipDirection;
    FBalloonTipTimer     : TTimer;
    FBalloonTipTimeOut   : Integer;
    FBalloonTipTitle     : String;
    FBalloonTipInfo      : String;
    FBalloonTipColor     : TColor;
    FBalloonTipTitleColor : TColor;
    FBalloonTipInfoColor : TColor;
    FBalloonTipAlwaysOnTop: Boolean;
    FBalloonTipAutoSize  : Boolean;

    FIcon                : TIcon;
    FIconVisible         : Boolean;
    FHint                : String;
    FShowHint            : Boolean;
    FShowBalloonTip      : Boolean;
    FPopupMenu           : TPopupMenu;
    FLeftPopup           : Boolean;
    FOnClick             : TNotifyEvent;
    FOnDblClick          : TNotifyEvent;
    FOnMouseDown         : TMouseEvent;
    FOnMouseUp           : TMouseEvent;
    FOnMouseMove         : TMouseMoveEvent;
    FStartMinimized      : Boolean;
    FClicked             : Boolean;

    ShowFirst            : Boolean;
    X_Pos_Icon           : Integer;
    Y_Pos_Icon           : Integer;

    function InitIcon: Boolean;
    function InitBalloonTip: Boolean;
    function FindTrayIcon(IcoDat: TNotifyIconData): TPoint;

    procedure HandleMessage(var Msg: TMessage); message TRAY_CALLBACK;
    procedure PopupAtCursor;
    procedure DoBalloonTipFlags;
    procedure BalloonTip_erzeugen;

    procedure SetIcon(Value: TIcon);
    procedure SetIconVisible(Value: Boolean);
    procedure SetHint(Value: String);
    procedure SetBalloonTipInfo(Value: String);
    procedure SetBalloonTipTitle(Value: String);
    procedure SetBalloonTipAlwaysOnTop(Value: Boolean);
    procedure SetBalloonTipColor(Value: TColor);
    procedure SetBalloonTipAutoSize(Value: Boolean);
    procedure SetShowHint(Value: Boolean);
    procedure SetShowBalloonTip(Value: Boolean);
    procedure SetBalloonTipFlag(Value : TBalloonTipFlags);
    procedure SetBalloonTipDirection(Value: TBalloonTipDirection);
    procedure SetBalloonTipTimeOut(Value: Integer);
    procedure SetBalloonTipTitleColor(Value: TColor);
    procedure SetBalloonTipInfoColor(Value: TColor);
  protected
    { Protected-Deklarationen }
    function ShowIcon: Boolean; virtual;
    function HideIcon: Boolean; virtual;
    function ModifyIcon: Boolean; virtual;
    function ModifyBalloonTip: Boolean; virtual;

    procedure Loaded; override;

    procedure Click; dynamic;
    procedure DblClick; dynamic;
    procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
      X, Y: Integer); dynamic;
    procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
      X, Y: Integer); dynamic;
    procedure MouseMove(Shift: TShiftState; X, Y: Integer); dynamic;

    procedure OnBalloonTipTimer(Sender: TObject);
    procedure OnForegroundTimer(Sender : TObject);

    procedure AppMinimize(Sender: TObject);
  public
    { Public-Deklarationen }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;

    procedure ShowMainForm;
    procedure HideMainForm;
  published
    { Published-Deklarationen }
    // Properties:
    property Hint: String read FHint write SetHint;

    property BalloonTipInfo: String read FBalloonTipInfo write SetBalloonTipInfo;

    property BalloonTipTitle: String read FBalloonTipTitle write SetBalloonTipTitle;

    property BalloonTipAlwaysOnTop: Boolean read FBalloonTipAlwaysOnTop
      write SetBalloonTipAlwaysOnTop default false;

    property BalloonTipFlags: TBalloonTipFlags read FBalloonTipFlags
      write SetBalloonTipFlag default BT_Info;

    property BalloonTipDirection: TBalloonTipDirection read FBalloonTipDirection
      write SetBalloonTipDirection default BT_Right;

    property BalloonTipTimeOut: Integer read FBalloonTipTimeOut write SetBalloonTipTimeOut
      default 1000;

    property BalloonTipColor: TColor read FBalloonTipColor write SetBalloonTipColor
      default clYellow;

    property BalloonTipTitleColor: TColor read FBalloonTipTitleColor write SetBalloonTipTitleColor
      default clBlack;

    property BalloonTipInfoColor: TColor read FBalloonTipInfoColor write SetBalloonTipInfoColor
      default clBlack;

    property BalloonTipAutoSize: Boolean read FBalloonTipAutoSize
      write SetBalloonTipAutoSize default false;

    property ShowHint: Boolean read FShowHint write SetShowHint
      default false;

    property ShowBalloonTip: Boolean read FShowBalloonTip write SetShowBalloonTip
      default false;

    property Icon: TIcon read FIcon write SetIcon stored true;

    property IconVisible: Boolean read FIconVisible write SetIconVisible
      default false;

    property PopupMenu: TPopupMenu read FPopupMenu write FPopupMenu;

    property LeftPopup: Boolean read FLeftPopup write FLeftPopup
      default False;

    property StartMinimized: Boolean read FStartMinimized write FStartMinimized
      default False;

    // Events:
    property OnClick: TNotifyEvent read FOnClick write FOnClick;
    property OnDblClick: TNotifyEvent read FOnDblClick write FOnDblClick;
    property OnMouseDown: TMouseEvent read FOnMouseDown write FOnMouseDown;
    property OnMouseUp: TMouseEvent read FOnMouseUp write FOnMouseUp;
    property OnMouseMove: TMouseMoveEvent read FOnMouseMove write FOnMouseMove;
  end;

procedure Register;

implementation

Helmi 17. Nov 2004 22:50

Re: Probleme mit Property einer Komponente
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich hab mal ein wenig getestet und hab mal eine testkombo gebastelt
in der ein Icon geladen wird

eigenartigerweise gehts dort auch ned

aber hier mal die kombo

jim_raynor 18. Nov 2004 06:21

Re: Probleme mit Property einer Komponente
 
Zeigt doch mal am besten den Code wo das Icon der ComboBox/TrayIcon zugewiesen wird. Ich glaube nämlich das dort der Fehler liegt.

Helmi 18. Nov 2004 07:57

Re: Probleme mit Property einer Komponente
 
ich denke nicht dass der fehler dort liegt wo das Icon dem trayIcon zugewiesen wird

den in der TestCombo wird das Icon niemanden zugewiesen, geht dort aber trotzdem auch ned

sprich die Procedure SetIcon wird dort auch nicht durchlaufen, obwohl das Icon nirgends zugewiesen wird

jim_raynor 18. Nov 2004 08:04

Re: Probleme mit Property einer Komponente
 
Ist ja auch richtig, dass SetIcon nicht aufgerufen wird. SetIcon wird nur aufgerufen wenn du Icon :=TIcon.Create machen würdest (also Icon direkt einen Wert zuweist). Machst du dass jetzt in deinem Code, dürfte es Probleme geben, aber SetIcon wird aufgerufen.

Da du aber dem Feld FIcon etwas zuweist, wird SetIcon nicht aufgerufen.

Aber ehrlich ich verstehe deine Logik nicht mehr :gruebel:

Zitat:

sprich die Procedure SetIcon wird dort auch nicht durchlaufen, obwohl das Icon nirgends zugewiesen wird
:gruebel: SetIcon wird doch nicht automatisch aufgerufen. Wenn Icon nirgends zugewiesen wird, dann dürfte doch klar sein, das SetIcon nicht aufgerufen wird. :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:50 Uhr.
Seite 1 von 3  1 23      

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