AGB  ·  Datenschutz  ·  Impressum  







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

property setzen bzw. ändern

Ein Thema von cBoB · begonnen am 20. Apr 2004 · letzter Beitrag vom 21. Apr 2004
Antwort Antwort
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#1

Re: property setzen bzw. ändern

  Alt 21. Apr 2004, 09:00
Hi CBOB,

schau mal in deinen Project-Code. Offensichtlich hast du dein Formular aus Unit2 deinem Projekt hinzugefügt. Somit wird automatisch schon eine Instanz beim Prog-Start erzeugt. Nun kann ich natürlich nicht sagen, was du an dem vorliegenden Code alles geändert hast.

Die übliche Vorgehensweise ist aber so:

1. Du fügst ein neues Formular in dein Projekt ein, und Delphi erzeugt automatisch den Aufruf
  Application.CreateForm(TForm1, Device1); Somit besteht eine Instanze die genutzt werden kann. Üblicheweise erzeugt Delphi auch automatisch die Instanz-Variable im implementation-Teil deiner Formular-Unit (hier Unit2)

2. Du machst das lieber alles alleine:

hier wähle ich folgende Verfahrensweise. Zum Bsp. im Main-Form creiere ich das Formular im OnCreate Ereignes meines MainForm. Das dann, wenn es für die ganze Laufzeit erhalten bleiben soll. Dann muß aber beachtet werden, dass bei Aufrufen aus anderen Units die Instanz global verfügbar sein muß. Das hat oben Delphi aber automatisch für mich gemacht. Sinn bringt das eigentlich nur, für spezielle Nutzungen, bei denen Du das entsprechende Formular oder Objekt in einer Instanz unbedingt privat kapseln möchtest.

Nun gut, was machst du im eigentlichen Object:

Hier solltest du eigentlich nie globale Bezüge verwenden, da damit dein Object unflexibel wird. Es ist immer an speziell erstellte instanzen gebunden etc.

In deinem eigenen Object kannst du der Einfachheit halber immer direkt auf eigene Eigenschaften und Methoden ohne Instanzangabe zugreifen. Der Parameter self wird sozusagen implizit unterstellt.

Bsp.:
Delphi-Quellcode:
procedure TDevice1.SetPSheet(var tst: TTabSheet);
begin
  FPSheet:=tst;
end;


// entspricht:
procedure TDevice1.SetPSheet(var tst: TTabSheet);
begin
  self.FPSheet:=tst;
end;
Deine Unit 2 sollte in der eigenen Erstellung eigentlich so aussehen:

Delphi-Quellcode:
unit devices;
interface
uses kl2700,Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, ComCtrls, StdCtrls, ExtCtrls;

type
  TDevice1 = class(TForm)
  private
    FPSheet: TTabSheet;
    procedure SetPSheet(var tst: TTabSheet);
  public
    property PSheet: TTabSheet read FPSheet write SetPSheet;
  end;

var Dev1 : TDevice1;

implementation

procedure TDevice1.SetPSheet(var tst: TTabSheet);
begin
  FPSheet:=tst; //hier ist dann vorbei - er wirft ne Fehlermeldung (Exception)
end;
Passiert das alles nicht per Drag and Drop im Fomular kümmerst Du dich selber um das Creieren Deiner Objekte.

Machst du es per Drag and Drop, sind diese Public und ein Property tut wirklich nicht not.

Gut, ich hoffe es war verständlich,

Gruß oki
  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 13:13 Uhr.
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