![]() |
XPLOSIVs Fragentheard
Hallo allerseits, ich bin ziemlich neu in Delphi, also nimmt es mir bitte nicht übel wenn die Programmierung schlecht erscheint ;)
Meine Erste Frage, ich will einen noch nicht vorhandenen Button eine OnKlick Prozedur zuweisen, ich habe es so gemacht
Delphi-Quellcode:
Nun sagt mir Delphi "Liste der Parameter unterschiedlich"
MyButton.OnClick := MyRichEdit.SelectAll;
Was würde funktionieren ? Achja, die Var's stehen schon ;) ---------- Frage 2, ich habe einen Speichern Button erstellt, er soll den Inhalt der RichEdit, von der aktuellen Seite speichern, wenn die Datei schon funktioniert soll er sie überschreiben. Wenn nicht, SaveDialog1 ausführen. Doch bei mir speichert er weder den RichEdit1 von TabSheet2, noch den non der aktuellen Seite.
Delphi-Quellcode:
var
MyEdit: TRichEdit; begin if SaveDialog1.FileName <> '' then MyEdit.lines.savetofile(SaveDialog1.Filename) else begin if SaveDialog1.Execute then MyEdit:=TRichEdit(PageControl1.ActivePage.Controls[0]); MyEdit.PlainText := True; MyEdit.Lines.SaveToFile(SaveDialog1.FileName); end; ---------- Genau so ist es auch bei Speichern unter, hier erstellt er zwar die Datei (+Inhalt) doch gibt er gleich nach dem Speichern eine Fehlermeldung aus. Er soll wie oben beim Speichern falls TabSheet2 aktiviert ist, dort den Inhalt von RichEdit1 speichern, wenn nicht soll er von der aktuellen Seite das RichEdit (var=MyRichEdit) speichern.
Delphi-Quellcode:
-----------
begin
SaveDialog1.Filter := 'NPC-Scripte (.d)|*.d'; SaveDialog1.Execute; if SaveDialog1.FileName <> '' then begin TRichEdit(PageControl1.ActivePage.Controls[0]).PlainText := True; TRichEdit(PageControl1.ActivePage.Controls[0]).Lines.SaveToFile(SaveDialog1.FileName); end; end; Auch beim OpenDialog soll er falls TabSheet2 aktiviert ist, die Datei in RichEdit1 laden, falls nicht soll er sie in die RichEdit der aktuellen Seite laden.
Delphi-Quellcode:
------------
begin
SaveDialog1.Filter := 'NPC-Scripte (.d)|*.d'; SaveDialog1.Execute; if SaveDialog1.FileName <> '' then begin TRichEdit(PageControl1.ActivePage.Controls[0]).PlainText := True; TRichEdit(PageControl1.ActivePage.Controls[0]).Lines.SaveToFile(SaveDialog1.FileName); end; end; Dann wollte ich noch Syntax Highlighting einbauen, also das einige Wörter Dick, kursiv oder in einer anderen Farbe dargestellt werden. Ich hab mir schon SynEdit angeguckt, bin jedoch beim Installieren gescheitert, Anleitungen bei Google haben auch nix gebracht :( Kann mir einer erklären odder sagen wie es noch geht ? Hoffe ihr könnt mir helfen, diese Probleme machen mir schon seit Tagen zu schaffen. MfG XPLOSIV |
Re: XPLOSIVs Fragentheard
Die Signatur der Methoden muss stimmen. Wie sieht sie für MyRichEdit.SelectAll aus?
|
Re: XPLOSIVs Fragentheard
Zitat:
|
Re: XPLOSIVs Fragentheard
Signatur = Anzahl un Typen der Parameter und des Rückgabewertes
|
Re: XPLOSIVs Fragentheard
Hmm, also ich weiß nicht, ich hab das einfach so hingeschrieben, hier mal ein bisschen mehr vom Source.
Delphi-Quellcode:
//Button für das TabSheet erstellen
MyButton:= TButton.Create(ts); MyButton.Parent:= ts; //damit wird dem Button das TabSheet als übergeordnete Komponente zugewiesen MyButton.Name:= 'Button'+IntToStr(PageControl1.PageCount); MyButton.Caption:= 'Skript kopieren'; //Funktion zuweisen MyButton.OnClick := MyRichEdit.SelectAll; Hoffe das Hilft ;) |
Re: XPLOSIVs Fragentheard
Wie gesagt die Signaturen müssen übereinstimmen. tun sie aber nicht.
Erwartet wird void (TObject) und .SelectAll hat void (void).
Delphi-Quellcode:
Procedure Form1.ButtonOnClic( Sender: TObject);
begin MyRichEdit.SelectAll; end; ,,, MyButton.OnClick := ButtonOnClick; |
Re: XPLOSIVs Fragentheard
Ich kann mir vorstellen, dass es für dich einfacher ist alle Fragen in einem Thread zu stellen. Es ist allerdings gängige Praxis hier und es steht auch in den Foren-Regeln drin, dass für jede Frage ein Thread eröffnet werden soll.
Der Grund ist ganz einfach, dass die Diskussionen nicht übermäßig unüberschaubar werden und was eigentlich viel wichtiger ist, dass Suchende einfacher die richtigen Antworten finden. |
Re: XPLOSIVs Fragentheard
Oh danke, jetzt bin ich schlauer, hmm ch versteh das net, heißt das es ist unmöglich oder wie ? Wo soll ich denn den Code hinschreiben, der Button ist ja erstmal garnicht da, sondern er wird erstellt.
Hoffe jemand kann mir helfen :( :cry: |
Re: XPLOSIVs Fragentheard
Ist egal ob der Button schon existiert. deshalb wird ja auch die Methode zur Laufzeit zugewiesen.
Du könntest dir auch eine abgeleitete Button-Klasse basteln. |
Re: XPLOSIVs Fragentheard
Zitat:
Wie soll ich das machen ? Was und wo soll ich hinschreiben ? Kann mir mal einer ordentliche Anleitung für SynEdit installieren geben, oder sagen wie man mit Delphi alleine Syntax Highlighting einbaut ? MfG XPLOSIV |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 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 by Thomas Breitkreuz