AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Noch mal zu neuen Komponenten - Neue Events - Methoden
Thema durchsuchen
Ansicht
Themen-Optionen

Noch mal zu neuen Komponenten - Neue Events - Methoden

Ein Thema von josef-b · begonnen am 29. Aug 2017 · letzter Beitrag vom 31. Aug 2017
 
SebastianZ

Registriert seit: 23. Jul 2009
89 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Noch mal zu neuen Komponenten - Neue Events - Methoden

  Alt 29. Aug 2017, 15:17
Ich kämpfe mich weiter voran..

Ich möchte in meiner neuen Komponente eine procedure "Starten einfügen" dazu sollen einige
bool-Variablen übernommen werden.

Ich habe es mir mal so gedacht (bzw. abgeschrieben ),

Delphi-Quellcode:
unit Elevator;

interface

uses
  System.SysUtils, System.Classes, Vcl.Controls;


type
  TElevatorStart = procedure (var starten,motorschutz,stern_ein,
          dreieck_ein,motor_ein,schief_oben,schief_unten,drehzahl: boolean) of object;

  TElevator = class(TGraphicControl)
  private
    { Private-Deklarationen }

    //Eingänge nur lesen

    FAdr_Motorschutz: Integer;
.......
.......
 
   
    //Ausgänge lesen und schreiben
    FStart:Boolean;
........
........
    FDoStart :TElevatorStart;

  protected
    { Protected-Deklarationen }

    procedure Paint; override;


  public
    { Public-Deklarationen }

    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;


  published
    { Published-Deklarationen }
    //hiermit wird das im Obkektinspektor angezeigt

  
    property Meldung_Motorschutz: boolean read FMeldung_Motorschutz write FMeldung_Motorschutz;
    property Meldung_Motor_Ein : boolean read FMeldung_Motor_Ein write FMeldung_Motor_Ein;
    property Meldung_Stern_Ein : boolean read FMeldung_Stern_Ein write FMeldung_Stern_Ein;
    property Meldung_Dreieck_Ein : boolean read FMeldung_Dreieck_Ein write FMeldung_Dreieck_Ein;
    property Meldung_Schief_o : boolean read FMeldung_Schief_o write FMeldung_Schief_o;
    property Meldung_Schief_u : boolean read FMeldung_Schief_u write FMeldung_Schief_u;
    property Meldung_Drehzahl : boolean read FMeldung_Drehzahl write FMeldung_Drehzahl;

    //Methoden
    property dostart : TElevatorStart read FDOStart write FDOStart;

  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('SPS', [TElevator]);
end;

constructor TElevator.Create(AOwner: TComponent);
begin
  inherited;
  FStart := true;

end;

destructor TElevator.Destroy;
begin
  // Hier deine Freigaben
  inherited;
end;

procedure TElevator.Paint;
begin
  inherited;
end;

procedure TElevator.dostart(var starten,motorschutz,stern_ein,
          dreieck_ein,motor_ein,schief_oben,schief_unten,drehzahl: boolean);
begin
  FStart := starten;
  FMeldung_Motorschutz := motorschutz;
  FMeldung_Motor_Ein := motor_ein;
  FMeldung_Stern_Ein := stern_ein;
  FMeldung_Dreieck_Ein := dreieck_ein;
  FMeldung_Schief_o:= schief_oben;
  FMeldung_Schief_u:= schief_unten;
  FMeldung_Drehzahl:= drehzahl;
end;
ganz unten bei Starten kommt : "Starten unterscheidet sich von vorheriger Deklaration" und
er meldet meine ganzen Variablen F.... als undeklariert

Ok, hier ist ein bisschen was durcheinander gekommen mit der Deklaration . Wenn es nicht notwendig ist, das die "dostart"-procedure von außen überschrieben wird, ist es nicht nötig hier mit procedure of object und property zu arbeiten.

Zu beginn reicht sicher diese Variante:

Delphi-Quellcode:
unit Elevator;

interface

uses
  System.SysUtils, System.Classes, Vcl.Controls;


type
  TElevator = class(TGraphicControl)
  private
    { Private-Deklarationen }

    //Eingänge nur lesen

    FAdr_Motorschutz: Integer;
.......
.......
 
   
    //Ausgänge lesen und schreiben
    FStart:Boolean;
........
........
    FDoStart :TElevatorStart;

  protected
    { Protected-Deklarationen }

    procedure Paint; override;


  public
    { Public-Deklarationen }

    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    
    procedure DoStart(var starten, motorschutz, stern_ein, dreieck_ein, motor_ein, schief_oben, schief_unten, drehzahl: Boolean);

  published
    { Published-Deklarationen }
    //hiermit wird das im Obkektinspektor angezeigt

  
    property Meldung_Motorschutz: boolean read FMeldung_Motorschutz write FMeldung_Motorschutz;
    property Meldung_Motor_Ein : boolean read FMeldung_Motor_Ein write FMeldung_Motor_Ein;
    property Meldung_Stern_Ein : boolean read FMeldung_Stern_Ein write FMeldung_Stern_Ein;
    property Meldung_Dreieck_Ein : boolean read FMeldung_Dreieck_Ein write FMeldung_Dreieck_Ein;
    property Meldung_Schief_o : boolean read FMeldung_Schief_o write FMeldung_Schief_o;
    property Meldung_Schief_u : boolean read FMeldung_Schief_u write FMeldung_Schief_u;
    property Meldung_Drehzahl : boolean read FMeldung_Drehzahl write FMeldung_Drehzahl;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('SPS', [TElevator]);
end;

constructor TElevator.Create(AOwner: TComponent);
begin
  inherited;

  FStart := true;

end;

destructor TElevator.Destroy;
begin
  // Hier deine Freigaben
  inherited;
end;

procedure TElevator.Paint;
begin
  inherited;
end;

procedure TElevator.DoStart(var starten,motorschutz,stern_ein,
          dreieck_ein,motor_ein,schief_oben,schief_unten,drehzahl: boolean);
begin
  FStart := starten;
  FMeldung_Motorschutz := motorschutz;
  FMeldung_Motor_Ein := motor_ein;
  FMeldung_Stern_Ein := stern_ein;
  FMeldung_Dreieck_Ein := dreieck_ein;
  FMeldung_Schief_o:= schief_oben;
  FMeldung_Schief_u:= schief_unten;
  FMeldung_Drehzahl:= drehzahl;
end;

//änderungen sind ungetestet
Weiters solltest du sicher stellen, dass deine Member-Variablen initialisiert werden. Aktuell ist nicht gesichert was nach dem Create zB in "FMeldung_Motor_Ein" steht.
  Mit Zitat antworten Zitat
 


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:46 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