![]() |
Enumeration kann nich angesprochen werden?
Hallo,
ich habe Probleme beim dynamischen entfernen der Kante eines Panels. Es geht dabei um folgenden Aufruf:
Code:
Das Problem ist, dass der Enumerationswert "bvNone" zum einen in der Unit "Controls" - die ja zum Standardumfang von Delphi gehört - als auch einer weiteren Unit einer 3rd Party Bibliothek vorkommt und sich der Linker dummerweise aus der falschen bedient. Mein Versuch die Zuweisung quasi mit dem Holzhammer zu machen schlug leider fehl.
TPanel.BevelInner:=bvNone;
Code:
Das Problem hierbei ist, dass der Linker durch das Stichwort "Controls" sich auf die Property TWinControl.Controls innerhalb der Unit Controls bezieht und nicht auf die Unit an sich.
TPanel.BevelInner:=Controls.TBevelCut[0];
Jetzt bin ich mit meinem Latein am Ende und erklären kann ich mir das Verhalten auch nicht. Was kann ich tun, um Zugriff auf TBevelCut zu erhalten? Danke Simon |
AW: Enumeration kann nich angesprochen werden?
Evtl. genügt es bereits, wenn Du die Unit Controls in der uses-Klausel nach hinten verschiebst.
|
AW: Enumeration kann nich angesprochen werden?
Schreib doch einfach
Delphi-Quellcode:
TPanel.BevelInner:=Controls.bvNone;
MFG Björn Zeutzheim |
AW: Enumeration kann nich angesprochen werden?
@DeddyH
Danke für den Tipp, aber das hatte ich leider schon erfolglos versucht :( @olee Damit habe ich das gleiche Problem, dass er sich auf die Property "Controls" und nicht auf die Unit bezieht. |
AW: Enumeration kann nich angesprochen werden?
Dann mach es doch so:
Mach ne kleine statische (am besten inline) Methode, welche dir deinen Wert zurückgibt:
Delphi-Quellcode:
function GetBvNone: Controls.TBevelCut; inline;
begin Result := Controls.bvNone; end; |
AW: Enumeration kann nich angesprochen werden?
Super, das hat geholfen! Danke :-D
Zitat:
|
AW: Enumeration kann nich angesprochen werden?
Das praktische daran: Durch das inline findet in wirklichkeit ja kein Funktionsaufruf statt, sondern nichts weiter als die Zuweisung, da der Delphi-Compiler das dadurch entsprechend optimiert.
|
AW: Enumeration kann nich angesprochen werden?
Zitat:
Kommt die Implementation erst später, wird nicht geinlinet, da der Compiler den Code noch nicht kennt. :stupid: (böse Falle, wenn man zwingend das Inline benötigt) |
AW: Enumeration kann nich angesprochen werden?
Das funktioniert aber auch nur wenn die Funktion vordeklariert wurde, was hier aber sowieso garnicht beabsichtigt wurde.
Aber guter Hinweis - das mit dem inline. |
AW: Enumeration kann nich angesprochen werden?
Wobei es hier eh um GUI-Zeug geht, von daher kann man den Overhead durch den Funktionsaufruf hier echt mal vernachlässigen :lol:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:03 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