Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi 2 ähnliche Sets mit teilweise identen Namen der Werte (https://www.delphipraxis.net/52633-2-aehnliche-sets-mit-teilweise-identen-namen-der-werte.html)

Delphi-Freak 31. Aug 2005 17:33


2 ähnliche Sets mit teilweise identen Namen der Werte
 
Hi!

Heute ist mein Problem (ich arbeite immer noch an einer Ableitung von TCustomSynEdit), dass ich auch den Typ TSynEditorOption bzw. TSynEditorOptions etwas ändern möchte und ihn deshalb als TMySynEditorOption definiere.
Das ganze mache ich in der Unit SynEdit.
Also in einer Unit:
Delphi-Quellcode:
//...

type

//...

   TSynEditorOption = (
      eoAltSetsColumnMode,
      eoAutoIndent,
      eoAutoSizeMaxScrollWidth,
      eoDisableScrollArrows,
      eoDragDropEditing,
      eoDropFiles,
      eoEnhanceHomeKey,
      eoEnhanceEndKey,
      eoGroupUndo,
      eoHalfPageScroll,
      eoHideShowScrollbars,
      eoKeepCaretX,
      eoNoCaret,
      eoNoSelection,
      eoRightMouseMovesCursor,
      eoScrollByOneLess,
      eoScrollHintFollows,
      eoScrollPastEof,
      eoScrollPastEol,
      eoShowScrollHint,
      eoShowSpecialChars,
      eoSmartTabDelete,
      eoSmartTabs,
      eoSpecialLineDefaultFg,
      eoTabIndent,
      eoTabsToSpaces,
      eoTrimTrailingSpaces
   );

//...

   TMySynEditorOption = (
      eoAltSetsColumnMode,
      eoAutoIndent,
      eoAutoSizeMaxScrollWidth,
      eoDisableScrollArrows,
      eoDragDropEditing,
      eoDropFiles,
      eoEnhanceHomeKey,
      eoEnhanceEndKey,
      eoGroupUndo,
      eoHalfPageScroll,
      eoHideShowScrollbars,
      eoKeepCaretX,
      eoNoCaret,
      eoNoSelection,
      eoRightMouseMovesCursor,
      eoScrollByOneLess,
      eoScrollHintFollows,
      eoScrollPastEof,
      eoScrollPastEol,
      eoShowScrollHint,
      eoShowTabsSpaces,
      eoShowLineBreaks,
      eoSmartTabDelete,
      eoSmartTabs,
      eoSpecialLineDefaultFg,
      eoTabIndent,
      eoTabsToSpaces,
      eoTrimTrailingSpaces
   );

//...
Und dann sagt mir der Compiler, dass z.B. eoAltSetsColumnMode redefiniert wurde und will einfach nicht fertig compilieren. Dass ich meine Werte einfach mit dem Prefix meo (statt eo) versehe ist keine Lösung, da ich dann so ziemlich alle Methoden von SynEdit überschreiben müsste, nur um eo* durch meo* auszubessern.
Meine Idee, die ich noch gehabt habe, ist folgende:
Delphi-Quellcode:
   TMySynEditorOption = TSynEditorOption + eoShowTabsSpaces;
Da habe ich einige Varianten ausprobiert, aber er will einfach keine nehmen.

Hat irgendjemand vielleicht eine Idee, was ich noch ausprobieren könnte. Bin schon wieder fast am Verzweifeln.

LG

NicoDE 31. Aug 2005 17:54

Re: 2 ähnliche Sets mit teilweise identen Namen der Werte
 
Solange Du die Orginal-Aufzählung nicht mitten drin erweiterst, sollte folgendes möglich sein:
Delphi-Quellcode:
TSynEditorOption = (
      eoAltSetsColumnMode,
      //...
      eoTrimTrailingSpaces
   );
const
  eoFoo = TSynEditorOption(Ord(High(TSynEditorOption)) + 1);
  eoBar = TSynEditorOption(Ord(High(TSynEditorOption)) + 2);
  //...
Allerdings kann (und wird) es dann Probleme geben, wenn jemand SizeOf(TSynEditorOption) und/oder High(TSynEditorOption) verwendet (da die Erweiterung der Aufzählung ausserhalb des Typs stattfindet).

Delphi-Freak 31. Aug 2005 18:06

Re: 2 ähnliche Sets mit teilweise identen Namen der Werte
 
Naja, ist schon mal eine Hilfe, danke!
Aber zeigt das der OI dann auch richtig an, wenn ich meine Kompo dann installiere... :gruebel:

Edit: Und geht das dann auch mit
Delphi-Quellcode:
TMySynEditorOptions = set of TMySynEditorOption;
ohne dass der Compiler aufschreit?

NicoDE 31. Aug 2005 18:10

Re: 2 ähnliche Sets mit teilweise identen Namen der Werte
 
Zitat:

Zitat von Delphi-Freak
Aber zeigt das der OI dann auch richtig an, wenn ich meine Kompo dann installiere... :gruebel:

Wahrscheinlich nicht. Dazu müsstest Du den Original-Typ erweitern...

Delphi-Freak 31. Aug 2005 18:10

Re: 2 ähnliche Sets mit teilweise identen Namen der Werte
 
Nur wie? :wiejetzt:

NicoDE 31. Aug 2005 18:16

Re: 2 ähnliche Sets mit teilweise identen Namen der Werte
 
Das Problem hatten wir schon im letzten Thread zum Thema. Entweder Du definierst die Typen neu (und erzwingst damit für den Endbenutzer eine Beachtung der uses-Reihenfolge). Oder Du entwickelst eine eigene Version von SynEdit und änderst die Originaldateien...

Flocke 31. Aug 2005 18:23

Re: 2 ähnliche Sets mit teilweise identen Namen der Werte
 
Du musst das doch nicht in das alte Feld reinpressen. Wie wär's mit 'ner komplett neuen Menge TSynEditorOptions2, als property ebenfalls published - die alten Funktionen brauchen deine Werte sowieso nicht.

Delphi-Freak 31. Aug 2005 18:26

Re: 2 ähnliche Sets mit teilweise identen Namen der Werte
 
Da hast du eigentlich recht. Dass ich die neue Property z.B. MyOptions nenne in der ich dann nur meine beiden Eigenschaften eoShowTabsSpaces und eoShowLineBreaks habe.
Super :thumb: ihr seid echt eine Hilfe!
:dp:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:46 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