Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Set Konstanten einen Wert zuweisen (https://www.delphipraxis.net/195350-set-konstanten-einen-wert-zuweisen.html)

DrUArn 21. Feb 2018 15:19

AW: Set Konstanten einen Wert zuweisen
 
@himitsu
ja, man lernt nie aus. Mir war gar nicht klar, das hinter einem set ein Zahl steht.

@Uwe Raabe
das war nur mein Beispiel. Diese Eigenschaften werden je nach Bedarf einzeln gesetzt und entsprechend in Tag umgerechnet. Einen entsprechenden Helper habe ich auch - aber deutlich umständlicher arbeitend als dein Vorschlag - oder doch nicht - ich habe eine extra Klasse von tcomponent abgeleitet, die diese Arbeit übernimmt - eine TRichEditHelper = class helper for TRichEdit habe ich noch nie genutzt, weiß z.Zt. nicht einmal, wie anzuwenden.

Das werde ich erst mal alles umarbeiten.

Danke
Uwe

DrUArn 21. Feb 2018 17:36

AW: Set Konstanten einen Wert zuweisen
 
Hallo Uwe Raabe,
bei mir kommen folgende Fehler im Helper


Delphi-Quellcode:
  TRichEditHelper = class helper for TRichEdit
  private
    function GetDockOpts_UA: tDockOpts_UA;
    procedure SetDockOpts_UA(const Value: tDockOpts_UA);
  public
    property DockOpts_UA: tDockOpts_UA read GetDockOpts_UA write SetDockOpts_UA;
  end;



function TRichEditHelper.GetDockOpts_UA: tDockOpts_UA;
begin
 Result := tDockOpts_UA(Tag);
end;

procedure TRichEditHelper.SetDockOpts_UA(const Value: tDockOpts_UA);
begin
tag:=word(value)
end;
In getdockopts_UA kommt Fehler ungültige Typumwandlung (E2089),
bei Setdockopts muß Value mit Word umgewandelt werden (nicht Integer - dann auch Fehler ungültige Typumwandlung (E2089))


Aber so arbeitet auch GetDockOpts_UA richtig
Delphi-Quellcode:
function TRichEditHelper.GetDockOpts_UA: tDockOpts_UA;
 var DOo:word;
begin
 DOo:=tag;
 Result := tDockOpts_UA(DOo);

//oder Result := tDockOpts_UA(word(tag));
end;


Nun muß ich noch Rauskriegen, wie man einen solchen helper anwendet - als Klasse läßt er sich nicht registrieren.

Gruß Uwe

Uwe Raabe 21. Feb 2018 18:45

AW: Set Konstanten einen Wert zuweisen
 
Zitat:

Zitat von DrUArn (Beitrag 1394378)
Nun muß ich noch Rauskriegen, wie man einen solchen helper anwendet - als Klasse läßt er sich nicht registrieren.

Der Helper beschert jedem TRichEdit ein neues Property DockOpts_UA, solange er im Scope sichtbar ist.

Delphi-Quellcode:
RichEdit1.DockOpts_UA := [DockBasicSize_UA];

DrUArn 22. Feb 2018 11:43

AW: Set Konstanten einen Wert zuweisen
 
@Uwe Raabe
Habe die Anwendung eines Helpers inzwischen gelernt - praktisch.
Werden eigentlich neue published Eigenschaften aus dem helper mit gespeichert z.B.

Delphi-Quellcode:
  WriteComponentResFile(Filename,RicheditMitHelper_ua1);
?

Resümee für mich:
Ein Set stellt auf komfortable Weise gesetzte Bits einer Zahl dar - und so habe ich auch die Zuordnung dieser Potenzen auf's Enum - Umwandlung erfolgt mit word(set).
Damit konnte ich die etwas abenteuerliche Array-Konstante
TagOpts2hochX_UA:array [tdockopt_UA]of integer = (1,2,4);//16,32,64,128,256,512,1024);
abschaffen.

Danke an alle für's mitdenken - Problem gelöst!

Gruß Uwe

Uwe Raabe 22. Feb 2018 13:29

AW: Set Konstanten einen Wert zuweisen
 
Zitat:

Zitat von DrUArn (Beitrag 1394421)
Werden eigentlich neue published Eigenschaften aus dem helper mit gespeichert z.B.

Delphi-Quellcode:
  WriteComponentResFile(Filename,RicheditMitHelper_ua1);
?

Nein. Das ist aber auch gar nicht notwendig, da das Tag-Property ja bereits gespeichert wird. Zusätzliche Felder lassen sich durch den Helper eh nicht herzaubern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:35 Uhr.
Seite 2 von 2     12   

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