![]() |
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 |
Re: XPLOSIVs Fragentheard
|
Re: XPLOSIVs Fragentheard
Ok gut, hab das jetzt mal gemacht, doch wie kann ich die Wörter hinzufügen die Hervorgehoben werden sollen ?
Achja, kann sich bitte einer mal die Speichern,Speichern unter und Öffnen Probleme angucken ? Die dürften ja ehe nur als ein Problem gelten, weil sie alle die selbe Macke haben. MfG XPLOSIV |
Re: XPLOSIVs Fragentheard
Hi,
machs mal so (ungetestet)
Delphi-Quellcode:
[EDIT] noch wesentlich einfacher dürfte das sein:
var
MyEdit: TRichEdit; begin if ((SaveDialog1.FileName <> '') or (SaveDialog1.Execute)) then begin MyEdit := TRichEdit(PageControl1.ActivePage.Controls[0]); // das ist ziemlich gefährlich... was ist wenn control[0] kein Richedit ist ;) MyEdit.PlainText := True; MyEdit.Lines.SaveToFile(SaveDialog1.FileName); end; end;
Delphi-Quellcode:
begin
if ((SaveDialog1.FileName <> '') or (SaveDialog1.Execute)) then begin // Hier kannste auch einfach den NAMEN des Richedits einsetzen TRichEdit(PageControl1.ActivePage.Controls[0]).PlainText := True; TRichEdit(PageControl1.ActivePage.Controls[0]).Lines.SaveToFile(SaveDialog1.FileName); end; end; Und schau dir ruhig nochmal die ganzen Tutorials an, die mkinzler verlinkt hat, die dürften für dich Gold wert sein! Gruß |
Re: XPLOSIVs Fragentheard
Jo hatte ich angeguckt, ne leider funktioniert der auch nicht :( :cry:
Bin echt am Verzweifeln... Hab inzwischen TRichEdit in TSynEdit eingewechselt. Bei deinem Code kommt auch Fehlermeldung beim Speichern... |
Re: XPLOSIVs Fragentheard
ich tippe mal, wie ich im Quellcode schon vermutet hatte ist das problem hier -> ActivePage.Controls[0]
Warum schreibst du nicht einfach den Namen des Richedits rein? (In folgendem Beispiel heisst das Richedit "Richedit1")
Delphi-Quellcode:
wenn das nichts hilft, zippe das gesamte projekt und stell es hoch, dann schau ichs mir gern nochmal an. Achja und noch was: mkinzler hat den Link um 12:45 gepostet... du willst mir nicht wirklich erzählen, dass du alle tutorials in 2,5Std durchgearbeitet hast?
begin
if ((SaveDialog1.FileName <> '') or (SaveDialog1.Execute)) then begin RichEdit1.PlainText := True; RichEdit1.Lines.SaveToFile(SaveDialog1.FileName); end; end; Nicht nur mal kurz drübergucken, Durcharbeiten! Nur so wirst du die Zusammenhänge besser verstehen. Ist nicht bös gemeint, möchts nur deutlich sagen! Gruß [edit]falschen text korrigiert[/EDit] |
Re: XPLOSIVs Fragentheard
Zitat:
Neee^^ Schon vor einigen Tagen hab ich mir die angeguckt. Den Link kannte ich ja schon^^ Hmm.. das ist aber nicht so einfach, wenn ich RichEdit1 mache, speichert er doch nur das RichEdit auf TabSheet2 oder ? Denn die anderen TabSheets (die der User per KnopfDruck erstellen kann) sind so:
Delphi-Quellcode:
MyRichEdit.Name:= 'RichEdit'+IntToStr(PageControl1.PageCount);
|
Re: XPLOSIVs Fragentheard
Zippe das Projekt und stells hoch.. ich schau dann gern rein
Gruß |
Re: XPLOSIVs Fragentheard
Also ich will den Source noch nicht öffentlich machen, aber sag einfach was du willst, ich kann dir die einzelnen Teile zeigen, oder nimm mich in ICQ auf, wenn ich einen einzelnen den Source geben macht das ehe nicht viel ;)
Meine Nummer: 336-177-135 |
Re: XPLOSIVs Fragentheard
Hi Xplosiv,
ich kann dir leider so nicht sagen was ich brauche, ist dafür noch ein wenig undurchsichtig die ganze Problematik. Du kannst mir ja den source per pn schicken, wenn du möchtest... ich werde den vertraulich behandeln. ICQ habe ich nicht installiert ;) [Edit]Achja, bevors vergessen wird... Ich bin mal so frei: Herzlich willkommen in der DP :dp: :hi: [/Edit] Gruß |
Re: XPLOSIVs Fragentheard
Oh Vielen Dank für den freundlichen Empfang ;)
Ok ich vertraue dir mal und habe mein gesamtes Projekt per PN geschickt ;) Hoffe du kennst die Antworten auf meine Probleme ;) |
Re: XPLOSIVs Fragentheard
Hallo XPLOSIV und auch von mir ein herzliches Willkommen in der Delphi-PRAXiS.
Du bist neu hier und genießt daher einen gewissen Welpenschutz. :stupid: In Deinem Thema hier geht es ein wenig drunter und drüber. Das liegt im Wesentlichen daran, dass Du gleich mehrere Fragen auf einmal gestellt hast. Es wäre etwas übersichtlicher gewesen, wenn Du für jede Frage ein neues Thema eröffnet hättest. Sparsamkeit ist in dieser Hinsicht ausnahmsweise mal keine Tugend. Daher meine Bitte an Dich für die Zukunft: Pro Frage ein neues Thema (sofern die Suchfunktion keine Antworten liefert ;-) ). Und dass Du mir nicht wieder mit ICQ fremd gehst. :warn: Dieses Forum lebt von der Diskussion. Das heißt, dass hier Fragen aufgeworfen und Lösungen präsentiert werden. Und davon können dann wieder andere profitieren. Wenn Du die Quellen Deines Projektes nicht veröffentlichen kannst oder darfst, so ist das in der Regel nur zu verständlich. Geht mir nicht anders. Aber dann musst Du - sofern Du dieses Forum nutzen möchtest - Deine Fragen so formulieren, dass sie auch mit einer Mindest-Menge an Code verständlich sind. Das ist hin und wieder eine gewisse Herausforderung, das gebe ich zu - aber es lohnt sich. ;-) Nun mache ich an dieser Stelle mal zu und wenn Du weitere Fragen hast, dann scheue Dich nicht, neue Thema zu eröffenen, denen Du bitte aussagekräftige Titel geben wirst. ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:45 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