AGB  ·  Datenschutz  ·  Impressum  







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

Set Konstanten einen Wert zuweisen

Ein Thema von DrUArn · begonnen am 21. Feb 2018 · letzter Beitrag vom 22. Feb 2018
Antwort Antwort
Seite 2 von 2     12   
DrUArn

Registriert seit: 20. Mär 2003
130 Beiträge
 
Delphi 10.3 Rio
 
#11

AW: Set Konstanten einen Wert zuweisen

  Alt 21. Feb 2018, 16:19
@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

Geändert von DrUArn (21. Feb 2018 um 17:30 Uhr)
  Mit Zitat antworten Zitat
DrUArn

Registriert seit: 20. Mär 2003
130 Beiträge
 
Delphi 10.3 Rio
 
#12

AW: Set Konstanten einen Wert zuweisen

  Alt 21. Feb 2018, 18:36
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

Geändert von DrUArn (21. Feb 2018 um 18:57 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.476 Beiträge
 
Delphi 12 Athens
 
#13

AW: Set Konstanten einen Wert zuweisen

  Alt 21. Feb 2018, 19:45
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.

RichEdit1.DockOpts_UA := [DockBasicSize_UA];
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
DrUArn

Registriert seit: 20. Mär 2003
130 Beiträge
 
Delphi 10.3 Rio
 
#14

AW: Set Konstanten einen Wert zuweisen

  Alt 22. Feb 2018, 12:43
@Uwe Raabe
Habe die Anwendung eines Helpers inzwischen gelernt - praktisch.
Werden eigentlich neue published Eigenschaften aus dem helper mit gespeichert z.B.

  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
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.476 Beiträge
 
Delphi 12 Athens
 
#15

AW: Set Konstanten einen Wert zuweisen

  Alt 22. Feb 2018, 14:29
Werden eigentlich neue published Eigenschaften aus dem helper mit gespeichert z.B.

  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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   

 

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 18:18 Uhr.
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