![]() |
AW: Reise von Berlin nach Athens
Ich habe mir dafür vor einiger Zeit eine Unit geschrieben, die eine statische Klasse enthält, die wiederum Methoden hat, die intern die Windows-MessageBox aufrufen. Die Benutzung kann dann z.B. so aussehen:
Delphi-Quellcode:
Damit ist immer klar, was gemeint ist. Für FMX müsste das wohl erweitert werden, aber ich benutze seit Jahren nur noch VCL.
TXXXDialog.ShowInfo('Pentagon erfolgreich gehackt');
if TXXXDialog.Confirm('Kreml auch gleich hacken?') then SiehZu(); |
AW: Reise von Berlin nach Athens
Zitat:
|
AW: Reise von Berlin nach Athens
So, meine Funktion kann ich ja ändern.
Was mache ich aber, wenn es eine Funktion vom "festen" Quelltext ist? Den hab ich nicht überladen. Zitat:
Delphi-Quellcode:
Wie erwähnt wusste Berlin, was zu tun ist - Athens beklagt das.if s<>'' then json.AddPair(prop,TJSONNumber.Create(s)) //s ist Typ string; prop ist shortstring else json.AddPair(prop,value); //<- hier meckert es! value ist Typ Variant, vielleicht numerisch :?: Muss ich jetzt dem Compiler entgegen kommen und den 'varianten' Wert selbst vorbereiten? :?: Oder gibt ein Schalter, der den Variant-Typ wie in Berlin selbst richtig einsetzt und die passende Funktion verwendet? |
AW: Reise von Berlin nach Athens
Zitat:
Wenn nicht, dann kann ich mir kaum vorstellen, dass Berlin es wusste und einfach blind in irgendeinen Typ gecastet hat ... was nicht unbedingt der richtige Typ sein muß. Lösungen z.B. für Boolean:
Delphi-Quellcode:
json.AddPair(prop, Boolean(value));
json.AddPair(prop, VarToBool(value)); |
AW: Reise von Berlin nach Athens
Zitat:
Gerade ein anderes kniffliges Problem: Ich habe SynEdit aus dem GetIt installiert. Und weil im Git es dazu keine Issue gibt (und auch wenn ich ein neues Projekt damit starte, problemlos), wird das wahrscheinlich nur bei mir das Problem sein. In einem neuen Projekt funktioniert das SynEdit mit den selben Einstellungen :roll: Wenn ich jetzt mein Projekt öffne, das ein SynEdit enthält, sagt mir die IDE, bevor noch irgendwas davon erscheint: Zitat:
Die Details erzählen mir.. Zitat:
Beim Ausführen meines Programms knallt es mit der selben Meldung in der unit SynEditWordWrap hier (die // stammen vom Autor):
Delphi-Quellcode:
Ich kenne mich mit Generics nicht aus - fehlt da was bei der Initialisierung? Woran kann das sonst liegen und wie behebe ich das?
// fLineOffsets[n] is the index of the first row of the [n+1]th line.
// e.g. Starting row of first line (0) is 0. Starting row of second line (1) // is fLineOffsets[0]. Clear? TSynWordWrapPlugin = class(TInterfacedObject, ISynEditBufferPlugin) private fLineOffsets: TList<Integer>; [...] constructor TSynWordWrapPlugin.Create(aOwner: TCustomSynEdit); begin inherited Create; // just to work as reminder in case I revert it to a TComponent... if aOwner = nil then raise Exception.Create( 'Owner of TSynWordWrapPlugin must be a TCustomSynEdit' ); fEditor := aOwner; fLineCount := fEditor.Lines.Count; fLineOffsets := TList<Integer>.Create; fRowLengths := TList<Integer>.Create; Reset; end; function TSynWordWrapPlugin.RowCount: integer; begin if fLineCount > 0 then Result := fLineOffsets[fLineCount - 1]; // <---- da: EArgumentOutOfRangeException Assert(fRowLengths.Count = Result); end; |
AW: Reise von Berlin nach Athens
Zitat:
Wollte vor mehreren Tagen schonmal fragen ... lag aber immernoch rum. Hab ja nicht alle alten Delphi installiert, um da mal eben nachsehn zu können. Sollte vielleicht doch endlich mal ein gewisses Projekt fertigstellen .... :gruebel: ![]() Zitat:
und ist es NULL, dann knallt es, wiel es ja kein Boolean ist. VarToBool macht der Gleiche, aber macht aus NULL ein False. Ebenso z.B. VarToStr und VarToInt, wo aus NULL ein Leerstring '', bzw. 0 wird. |
AW: Reise von Berlin nach Athens
Wozu dient der Vcl.Forms.TForm.VisualManager ?
In der Online-Hilfe zu Delphi 12 ist dazu äußert informativ zu lesen :thumb::wall: Zitat:
Warum frage ich? Ich habe beim Einlesen meiner älteren Projekte irgendwie Darstellungs-Probleme (ich habe die Projekte nur mit den Dateien *.pas, *.dfm und die .dpr in einen neuen Ordner angelegt, ganz frisch also für Athens; keine *.res zunächst). zB passen die Beschriftung der Checkboxen nicht mehr, die Buttons heben sich ganz hässlich nur farblich (dunkelgrau) vom Rest ab, also kein Rahmen herum. Dann habe ich entdeckt, daß es die neuerdings Eigenschaft "StyleName" gibt und setze sie im Formular auf "Windows" - schon besser. Starte ich dann das Programm, habe ich aber die blau glänzende Ansicht von Vista mit dem dicken Rahmen außen herum - und die Aufschrift der Titelleiste fehlt, bis ich die Fenstergröße ändere. Warum kann das Programm nicht so ausgeführt werden, wie ich es im Designer der IDE sehe?? Was hat die IDE für ein Style? Bei Berlin hatte ich ja schon Styles einrichten können - aber die haben sich sehr nachteilig auf die Aufbau-Geschwindigkeit der Darstellung ausgewirkt. Trotz DoubleBuffer flackern... - daher habe ich das dann gelassen. :roll: Und was mache ich denn jetzt schon wieder falsch? |
AW: Reise von Berlin nach Athens
Zitat:
![]() Wegen der Darstellungsprobleme müsstest du vielleicht etwas konkreter werden. Was du in der IDE siehst, hängt stark von den aktuellem Einstellungen unter Tools - Optionen - Benutzeroberfläche - Formular-Designer ab. Zur Laufzeit sind die Einstellungen unter Projekt - Optionen - Anwendung - Manifest und Erscheinungsbild relevant. Außerdem wären Screenshots von der fehlerhaften Darstellung hilfreich. |
AW: Reise von Berlin nach Athens
Zitat:
Die IDE ist seit 'ner Weile geskinnt (mit Design) und leider sind die zu blöde den FormDesigner davon auszunehmen. Im Designer kannst du bei deiner Form das Property StyleName auf "Windows" einstellen, dann sieht es dort so aus, wie später im Betrieb. (persönlich würde ich es aber zur Laufzeit nicht so lassen) Ich würde dir auch empfehlen nicht die neue automatisch generierte DPROJ zu nehmen, sondern ein neues VCL-Projekt zu erstellen und dessen DPROJ zu kopieren. (es so nennen, wie dein Projekt oder den Projektnamen mit TextEditor drin an mehreren Stellen ändern) Oder, da du ja garantiert eine Versionierung nutzt, einfach das neue Projekt drüberspeichern und dann alles, außer der DPROJ, reverten. :angle2: |
AW: Reise von Berlin nach Athens
Zitat:
Man sollte dann allerdings auch die IDE mit 96 DPI laufen lassen (falls das relevant ist), denn die fehlerhafte Darstellung eines runter-skalierten Forms ohne VCL-Style ist einfach nur grauenhaft. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:41 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