AGB  ·  Datenschutz  ·  Impressum  







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

komponeten eigenschaften

Ein Thema von LoL · begonnen am 29. Sep 2003 · letzter Beitrag vom 29. Sep 2003
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#21

Re: komponeten eigenschaften

  Alt 29. Sep 2003, 13:37
Sorry, ersetze Nummer mal mit Art...

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#22

Re: komponeten eigenschaften

  Alt 29. Sep 2003, 13:43
Du musst den neuen Wert der privaten Feld-Variable zuweisen und nicht wieder dem property selbst, sonst kommst du in eine Endlosschleife, da sich die Set-Methode indirekt immer wieder selbst aufruft!
Delphi-Quellcode:
procedure TTest.SetArt(Value: TArt);
begin
  if Value <> Nummer then
  begin
    // ÄNDERUNG
    FNummer := Value;
  end;
end;
Manuel Pöter
  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#23

Re: komponeten eigenschaften

  Alt 29. Sep 2003, 13:44
im oi wird das was man ausgewählz hat nicht gespeichert sondern einfach wieder zurückgesetzt
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#24

Re: komponeten eigenschaften

  Alt 29. Sep 2003, 13:44
Moin Christoph,

ändere das mal wie folgt ab:

Delphi-Quellcode:
procedure TTest.SetArt(Value: TArt);
begin
  if Value <> Art then
  begin
    // ÄNDERUNG
    Art := Value;
  end;
end;
Wenn die Property (nummer) mit Value gefüllt wird, wird automatisch die Methode SetArt wieder aufgerufen, und zwar endlos. Die Eigenschaft nummer ist ja nur ein Platzhalter für das interne Feld Art, und kann selber keinen Wert aufnehmen.

BTW: Um sich auch in fremden Sourcen zurechtzufinden, bzw. eigenen Sourcen für andere lesbarer zu gestalten, wäre es sinnvoll die Benennungskonventionen einzuhalten.
Das soll in diesem Falle heissen: Interne Felder sollten immer mit einem F beginnen.
Dann sieht man auch innerhalb der Komponente leichter auf was man zugreift.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#25

Re: komponeten eigenschaften

  Alt 29. Sep 2003, 13:50
hier mal das so wie ich es machen will:
ich möchte innerhalb des labels ein dreieck zeichnen. zur auswahl unten rechts und links und oben rechts und links.
Delphi-Quellcode:
unit Test;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, ExtCtrls, Graphics, StdCtrls;

type
  TArt = (TaDreieckUl, TaDreieckUr, TaDreieckOl, TaDreieckOr);

type
  TTest = class(TLabel)
  private
    { Private declarations }
    FArt : TArt;
    procedure SetArt(Value : TArt);
  protected
    { Protected declarations }
  public

    { Public declarations }
    constructor Create(AOwner: TComponent); override;
  published
    { Published declarations }
    property Aussehen : TArt read FArt write SetArt;
  end;

procedure Register;

implementation

constructor TTest.Create(AOwner : TComponent);
begin
  inherited Create(AOwner);
end;

procedure TTest.SetArt(Value: TArt);
begin
  if Value <> Aussehen then
    begin
      if (Aussehen = TaDreieckUl) or (Aussehen = TaDreieckOr) then
        begin
          canvas.Brush.Color := clblack;
          canvas.MoveTo(0,0);
          canvas.LineTo(width,height);
          if Aussehen = TaDreieckUl then
            canvas.FloodFill(1,10,clblack,fsborder)
          else
            canvas.FloodFill(10,1,clblack,fsborder)
        end
      else
        begin
          canvas.Brush.Color := clblack;
          canvas.MoveTo(width,height);
          canvas.LineTo(0,height);
          if Aussehen = TaDreieckOl then
            canvas.FloodFill(1,10,clblack,fsborder)
          else
            canvas.FloodFill(10,1,clblack,fsborder)
        end;
      Aussehen := Value;
    end;
end;

procedure Register;
begin
  RegisterComponents('Samples', [TTest]);
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#26

Re: komponeten eigenschaften

  Alt 29. Sep 2003, 13:51
Code:
...
type
  TTest = class(TLabel)
  private
    { Private declarations }
    FArt    : TArt;
    procedure SetArt(Value : TArt);
  protected
    { Protected declarations }
  public

    { Public declarations }
    constructor Create(AOwner: TComponent); override;
  published
    { Published declarations }
    property Aussehen : TArt   read FArt    write SetArt;
  end;

...

procedure TTest.SetArt(Value: TArt);
begin
  if Value <> Aussehen then
    begin
      ....
      [color=#ff0000]FArt[/color] := Value;
    end;
end;
...
......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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