Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi label aus record positionieren (https://www.delphipraxis.net/66548-label-aus-record-positionieren.html)

happyaura 31. Mär 2006 10:29


label aus record positionieren
 
Hallo,

bis jetzt hab ich ich mir meine objekte immer schön mit der maus in mein Form geklickt, bei records stoße ich mit dieser technik leider an meine grenzen. wie kann ich einem label sagen, dass es das zu einem record zugehörige ist.

Delphi-Quellcode:
 
type Ttest = record name  :        string;
                    Lab       : TLabel;
              End;

var test1, test2 :Ttest;

[...]

test1.Lab.Caption:='test1';
test2.Lab.Caption:='test2';
'test1' und 'test2' werden aber nirgendwo angezeigt, da das label noch nicht positioniert wurde. den namen eines Labels in test1.lab umzunennen scheiterte leider auch.

wie ist das beste vorgehen?

vielen Dank,
Martin

Angel4585 31. Mär 2006 10:30

Re: label aus record positionieren
 
Also du musst folgende Eigenschaften setzen:

Left,Top,Width und Height, dann sollte es gehen.

Klaus01 31. Mär 2006 10:35

Re: label aus record positionieren
 
sollte am zuerst nicht auch das Label erstellen
Delphi-Quellcode:
test1.lab:= Tlabel.create();
Oder irre ich mich da?

Grüße
Klaus

mkinzler 31. Mär 2006 10:37

Re: label aus record positionieren
 
TLable ist ja nur eine Referenz (Zeiger) auf eine Label-Objekt. Dieses muß natürlich erst erzeugt werden.

Delphi-Quellcode:
test1.Lab := Tlable.Create( Form1);
test1.lab.Parent := Form1;
test1.lab.Left := <x-Position>;

happyaura 31. Mär 2006 10:49

Re: label aus record positionieren
 
@mkinzler
ah, vielen dank, ich denke daran hats gelegen, nun kann ich auch wieder lustig in meinem Formular (sofern es sich überhaupt formular nennt) rumklicken.
anschließend das objekt zuordnen (Test1.Lab :=Label1) und dann wie gewollt über test1.lab.caption ect ansprechen.

ist echt prima, dass hier meißt so prompte und kompetente hilfe kommt, vielen dank noch mal

Elvis 31. Mär 2006 11:22

Re: label aus record positionieren
 
Was du da hast ist DEFINITIV kein Fall für einen Record.
Mache eine Klasse daraus. AnsiStrings in Records werden oft nicht freigegeben, außerdem ist das Arbeiten mit einem Record in dem sich Objekte befinden _ziemlich_ eklig. ;)
Records, sollten IMHO nur als stumpfsinige Datencontainer benutzt werden wenn die Größe der Daten konstant ist (also keine strings, keine dyn. arrays und keine Objekte).
Für alles andere finde ich Klassen angebrachter.

happyaura 31. Mär 2006 12:34

Re: label aus record positionieren
 
Hi elvis.
dann sollte die folgende struktur Deiner Meinung wohl nach verboten ein:
Delphi-Quellcode:
   type Tsensor = record nummer,
                         zeitpunkt,
                         interval,
                         wert          : integer;
                         filename      : string;
                         temprangeHigh : boolean;
                         lab           : Tlabel;
                         button        : TButton;
                         edit          : TEdit;
                         ComboBox      : TComboBox;
              End;
kannst Du mir 'nen kurzes BSP geben, wie man klassen in delphi deklariert und wie man auf die komponenten zugreift? die prozeduren sensor_auslesen und sensordaten_speichern sollten dann wohl auch in die klasse mit rein. ein link zu 'ner guten erklärung wär sonst auch top, ich hab da irgendwie noch nicht das richtige gefunden...

mkinzler 31. Mär 2006 12:40

Re: label aus record positionieren
 
Ich würde das in eine Formular-Klasse packen.
Am Besten nimmst du eine vorhandene Klasse egänzt deine Felder und implemetierst die Methode zum Create-Event.
Delphi-Quellcode:
type
    TSensorForm = class( TForm)
                         nummer,
                         zeitpunkt,
                         interval,
                         wert          : integer;
                         filename      : string;
                         temprangeHigh : boolean;
                         lab           : Tlabel;
                         button        : TButton;
                         edit          : TEdit;
                         ComboBox      : TComboBox;
              End;

procedure TSensorForm.FormCreate(Sender: TObject);
begin
    lab := TLabel.Create( self);
    lab.Parent := self;
   ...
end;

Elvis 31. Mär 2006 12:52

Re: label aus record positionieren
 
Auf Luckies Seite findest du ein Anfängertutorial für OO-Programierung. ;)

btw: Ich weiß aber auch nicht was du da machst und warum du da mit lauter Controls um dich wirfst.
Mir ist nur wieder die Zweckentfremdung von Records aufgefallen und wollte den Hinweis loswerden. ;)
Schaue dir Luckies Tut an, vllt gibt dir ein wenig Hintergrund ganz andere Ansätze. :)

happyaura 31. Mär 2006 13:09

Re: label aus record positionieren
 
ich komme eigentlich von c/c++, reiner gelegenheits konsolenprogrammierer.
nun will ich einen/mehrere sensor/en regelmäßig(minütlich bis stündlich) auslesen, und fand es dafür angenehmer, das mit delphi zu lösen, weil ich mir so meine oberfläche zusammenklicken kann und über 'nen timer recht simpel neben dem sensorauslesen auch benutzereingaben abfangen kann, wie z.B. abfrageinterval ändern.
nachteil: ich muß mich in die syntax ein wenig reinfriemeln, krame dazu ganz unten in meinen schul-pascal kenntnissen und schau mir beispilcode an. Lesen ist ja meißt ein geringeres problem, als selbst erstellen...

ich werd mich mal auf die suche nach Luckies Tutorial.
Gruß Martin


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz