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
 
josef-b

Registriert seit: 6. Jun 2004
Ort: bei Jena in Thüringen
95 Beiträge
 
Delphi 11 Alexandria
 
#8

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

  Alt 30. Aug 2017, 15:47
Habe jetzt mal ein paar Mengentypen gemacht

Delphi-Quellcode:

unit Elevator;

interface

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

type

  //Anfang Mengentyp SPS_Modbus_Adressen
  TSPS_Modbus_Adressen = Class(TPersistent)
    private
    FAdr_Meldung_Motorschutz: Integer;
    FAdr_Meldung_Motor_Ein: Integer;
    FAdr_Meldung_Stern_Ein: Integer;
    FAdr_Meldung_Dreieck_Ein: Integer;
    FAdr_Meldung_Schieflauf_Oben: Integer;
    FAdr_Meldung_Schieflauf_Unten: Integer;
    FAdr_Meldung_Drehzahlwaechter: Integer;

    published
    property Adresse_Motorschutz: Integer read FAdr_Meldung_Motorschutz write FAdr_Meldung_Motorschutz;
    property Adresse_Motor_Ein: Integer read FAdr_Meldung_Motor_Ein write FAdr_Meldung_Motor_Ein;
    property Adresse_Stern_Ein: Integer read FAdr_Meldung_Stern_Ein write FAdr_Meldung_Stern_Ein;
    property Adresse_Dreieck_Ein: Integer read FAdr_Meldung_Dreieck_Ein write FAdr_Meldung_Dreieck_Ein;
    property Adresse_Schieflauf_Oben: Integer read FAdr_Meldung_Schieflauf_Oben write FAdr_Meldung_Schieflauf_Oben;
    property Adresse_Schieflauf_Unten: Integer read FAdr_Meldung_Schieflauf_Unten write FAdr_Meldung_Schieflauf_Unten;
    property Adresse_Drehzahlwächter: Integer read FAdr_Meldung_Drehzahlwaechter write FAdr_Meldung_Drehzahlwaechter;
  End;

  //Ende Mengentyp SPS_Modbus_Adressen

  //Anfang Mengentyp SPS_Zustände
  TSPS_Zustaende = Class(TPersistent)
    private
    FMeldung_Motorschutz: boolean;
    FMeldung_Motor_Ein: boolean;
    FMeldung_Stern_Ein:boolean;
    FMeldung_Dreieck_Ein:boolean;
    FMeldung_Schief_o:boolean;
    FMeldung_Schief_u:boolean;
    FMeldung_Drehzahl:boolean;

    published
    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_Schieflauf_oben : boolean read FMeldung_Schief_o write FMeldung_Schief_o;
    property Meldung_Schieflauf_unten : boolean read FMeldung_Schief_u write FMeldung_Schief_u;
    property Meldung_Drehzahl : boolean read FMeldung_Drehzahl write FMeldung_Drehzahl;
  End;

  TSPS_Options = class(TPersistent)
    private
    FFreigabe:boolean;
    FZeit_Stern : integer;
    FZeit_Nachlauf: integer;
    FStern_Dreieck_Schaltung: boolean;
    FAktiv :boolean;
    published
    property Freigabe : boolean read FFreigabe write FFreigabe;
    property Zeit_Stern :Integer read FZeit_Stern write FZeit_Stern default 10;
    property Zeit_Nachlauf: integer read FZeit_Nachlauf write FZeit_Nachlauf default 30;
    property Stern_Dreieck_Schaltung: boolean read FStern_Dreieck_Schaltung write FStern_Dreieck_Schaltung;
    property Aktiv: boolean read FAktiv write FAktiv;
  end;

  TElevator = class(TGraphicControl)
  private
    { Private-Deklarationen }
     //Eingänge nur lesen

    FModbus_Adressen: TSPS_Modbus_Adressen;
    FSPS_Zustaende : TSPS_Zustaende;
    FSPS_Options : TSPS_Options;

  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 onclick;
    property SPS_Modbus_Adressen : TSPS_Modbus_Adressen read FModbus_Adressen write FModbus_Adressen;
    property SPS_Zustände : TSPS_Zustaende read FSPS_Zustaende write FSPS_Zustaende;
    property SPS_Optionen : TSPS_Options read FSPS_Options write FSPS_Options;

    procedure starten(var starten,motorschutz,stern_ein,
          dreieck_ein,motor_ein,schief_oben,schief_unten,drehzahl: boolean);


  end;

procedure Register;

implementation

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

constructor TElevator.Create(AOwner: TComponent);
begin
  inherited;
  FModbus_Adressen := TSPS_Modbus_Adressen.Create;
  FSPS_Zustaende := TSPS_Zustaende.Create;
  FSPS_Options := TSPS_Options.Create;
end;

destructor TElevator.Destroy;
begin
  inherited;
end;

procedure TElevator.Paint;
begin
  inherited; // <--- Wichtig!!!

  width := 70;
  height := 400;

  with canvas do
    begin
    //Silo-Körper
    pen.Color := clblack;
    Brush.Color := clgray;
    Brush.Style := bsSolid;
    rectangle(0,0,30,300);
    end;
  //noch nicht fertig
end;

procedure TElevator.starten(var starten,motorschutz,stern_ein,
          dreieck_ein,motor_ein,schief_oben,schief_unten,drehzahl: boolean);
begin

  //das wird noch vereinfacht

FSPS_Zustaende.FMeldung_Motorschutz := motorschutz;
FSPS_Zustaende.FMeldung_Motor_Ein := motor_ein;
FSPS_Zustaende.FMeldung_Stern_Ein := stern_ein;
FSPS_Zustaende.FMeldung_Dreieck_Ein := dreieck_ein;
FSPS_Zustaende.FMeldung_Schief_o:= schief_oben;
FSPS_Zustaende.FMeldung_Schief_u:= schief_unten;
FSPS_Zustaende.FMeldung_Drehzahl:= drehzahl;

if (FSPS_Zustaende.FMeldung_Motorschutz = false) and
     (FSPS_Zustaende.FMeldung_Schief_O = false) and
     (FSPS_Zustaende.FMeldung_Schief_u = false) and
     (FSPS_Zustaende.Fmeldung_Drehzahl = false)
then
  begin
  //do something going on
  end;
end;

end.

Geändert von josef-b (30. Aug 2017 um 16:06 Uhr)
  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 07: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