AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi OOP-TRealEdit von TEdit abgeleitet und Fähigkeiten erweitert
Thema durchsuchen
Ansicht
Themen-Optionen

OOP-TRealEdit von TEdit abgeleitet und Fähigkeiten erweitert

Ein Thema von Hansa · begonnen am 9. Apr 2003 · letzter Beitrag vom 14. Aug 2003
Antwort Antwort
Seite 6 von 12   « Erste     456 78     Letzte »    
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#51
  Alt 17. Apr 2003, 12:24
Variants ist seit Delphi 6 eine eigene Unit, die vorher woanders drin war. Frag mich nur nicht wo.
Gruß
Hansa
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#52
  Alt 17. Apr 2003, 12:40
Hallo,

Du kannst die Variants normal raus werfen, auch bei allen anderen Projekten mache ich sie immer überall raus, weil nie gebraucht wird.

Grüsse, Daniel
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#53
  Alt 17. Apr 2003, 13:04
Hi,

Variants hab ich rausgeworfen.

Ich bekomme immer noch eine Meldung SetSubComponent nicht gefunden.

Gruß oki
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#54
  Alt 17. Apr 2003, 13:19
Hi,

man muß nur wissen wen man fragt. 8)

Zitat:
Hi Hansa
Also in D5 waren die ganzen Variant Geschichten in SYSTEM deklariert. Die Umstellung von D5 auf D6 klappt dabei problemlos, ob's umgekehrt genauso ist kann ich dir nicht sagen. Aber einfach mal ausprobieren.
Das SetSubComponent habe ich auskommentiert. Keine Auswirkung. Dann habe ich das SetParent wie von Motzi gesagt in den Quelltext geschrieben. Die Deklaration sieht nun so aus:

Code:
type
  TRealEdit = class(TCustomEdit)
  private
    fAlignment:TAlignment;
    fOnlyReals:boolean;
    fLabel:TLabel;
    procedure SetAlignment(Value:TAlignment);
    procedure SetOnlyReals(Value:boolean);
    procedure SetLabelPos;
  protected
    procedure SetParent(Value:TWinControl);
    procedure SetLabel(Value:TLabel);
    procedure CreateParams(var Params:TCreateParams); override;
    procedure KeyPress(var Key:Char); override;
  public
    constructor Create(AOwner: TComponent); override;
    destructor destroy; override;
  published
    property Alignment: TAlignment read fAlignment write SetAlignment;
    property OnlyReals: Boolean read fOnlyReals write SetOnlyReals;
    property RealLabel: TLabel read fLabel write SetLabel;
  end;
Aber auch das hat keine Auswirkungen. Label ist nicht zu sehen, nur im ObjectTreeView.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#55
  Alt 17. Apr 2003, 14:27
mir geht bei deiner Deklaration von SetParent das "override" ab...!

OK, jetzt hast du mich soweit! Sobald ich zuhause bin setz ich mich hin und probier das mal aus! Das kanns doch nicht sein, dass das nicht hinhaut!
Manuel Pöter
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#56
  Alt 17. Apr 2003, 18:01
Hi Leute,

jetzt mal was zum grübeln.

Wenn etwas nicht mehr so will wie es soll, dann mach ich es erst mal ganzzzzzzzz einfach.

Ich hab auf einem Formular einen Button platziert und wenn mal auf diesen clickt wird ein Label zur Laufzeit erstellt. Jetzt passiert folgendes:

wenn ich nur schreibe

  FLabel := TLabel.Create(self); ist das Label zwar da (hab ich geprüft), aber nicht zu sehen.

Schreibe ich

Delphi-Quellcode:
  FLabel := TLabel.Create(self);
  FLabel.Parent := self;
ist das Label auch zu sehen. Über Top und Left setze ich natürlich die Position.

Also ist mal eins klar, Parent muß zwingend gesetzt werden und erfolgt nicht automatisch im Create über Owner.
Parent ist demzufolge das Element auf dem sich das Label befindet und zu dessen Client-Bereich Top und Left in Beziehung steht.

Mit dem ganzen Kram bin ich mir jetzt recht sicher.

Die Frage ist jetzt, was ist nun Owner im Create des TRealEdit und ist der Owner identisch mit dem Parent?

Ich denke mal nicht! Es muß wohl bei Setzen des Parent des Labels nicht der Owner des RealEdit sondern der Parent verwendet werden.

Ich teste mal weiter.

Gruß oki
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#57
  Alt 17. Apr 2003, 19:18
Zitat von oki:
Also ist mal eins klar, Parent muß zwingend gesetzt werden und erfolgt nicht automatisch im Create über Owner.
Parent ist demzufolge das Element auf dem sich das Label befindet und zu dessen Client-Bereich Top und Left in Beziehung steht.
Genau das versuch ich doch die ganze Zeit zu sagen...!
Manuel Pöter
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#58
  Alt 17. Apr 2003, 19:39
ja ja Motzi,

ich hab doch nur laut nachgedacht.

Ich bin Aber schon ein Stück weiter. Folgender Code:

Delphi-Quellcode:
constructor TRealEdit.Create(AOwner: TComponent);
begin
  inherited;
  FAlignment := taRightJustify;
  OnlyReals := true;
  FLabel := TLabel.Create(self);
  FLabel.Parent := TWincontrol(AOwner);
  FLabel.Name := 'RealLabel';
// FLabel.SetSubComponent(true);
  FLabel.Caption := 'CAPTION';
  // Position des Lables setzen
  SetLabelPos;
end;
So, nun kommt der Witz. Der Besitzer (Owner) des Labels ist das RealEdit! Somit ist self der richtige Parameter im Create!

Als Parent wird der Besitzer des RealEdit verwendet, denn in diesem wird das RealEdit dargestellt. Dort soll ja auch das Label hin. Die Typkonvertierung ist nun nicht sehr elegant, da fällt euch bestimmt was zu ein.


Ich hab die ganze sache mal ausprobiert. Die hat nur einen Schönheitsfehler, das Label erscheint zur Laufzeit, aber nicht zur Designzeit. Naja, wird noch.

Die Methode SetLabelPos steht unter privat und setzt Top und Left des Labels in Abhängigkeit von Top und Left des RealEdits. Da muß man dann auch noch weitermachen.


Gruß oki
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#59
  Alt 17. Apr 2003, 19:40
Hi,

wie sagt Motzi : "Monsterthread", ja schon recht groß *grusel*

hier hängt noch eine Version dran, bei der sich die maximale Anzahl an Nachkommastellen im OI einstellen läßt. Vorgabewert ist dabei 2. Das Label geht noch nicht!!!
Angehängte Dateien
Dateityp: pas realedit_936.pas (2,7 KB, 14x aufgerufen)
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#60
  Alt 17. Apr 2003, 19:45
mir ist da ein kleiner fehler aufgefallen:

wenn ich "Alignment" ändere, wird das Alignment der Komponente zwar geändert (ich kanns sehen), aber im OI steht immer noch taRightAlignment!
David F.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 6 von 12   « Erste     456 78     Letzte »    


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 23:03 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