Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   XPLOSIVs Fragentheard (https://www.delphipraxis.net/98721-xplosivs-fragentheard.html)

XPLOSIV 31. Aug 2007 09:37


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:
MyButton.OnClick := MyRichEdit.SelectAll;
Nun sagt mir Delphi "Liste der Parameter unterschiedlich"

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

mkinzler 31. Aug 2007 09:43

Re: XPLOSIVs Fragentheard
 
Die Signatur der Methoden muss stimmen. Wie sieht sie für MyRichEdit.SelectAll aus?

XPLOSIV 31. Aug 2007 09:48

Re: XPLOSIVs Fragentheard
 
Zitat:

Zitat von mkinzler
Die Signatur der Methoden muss stimmen. Wie sieht sie für MyRichEdit.SelectAll aus?

Hmm...Ich verstehe nicht ganz, wie gesagt bin seeehr Neu :oops:

mkinzler 31. Aug 2007 09:49

Re: XPLOSIVs Fragentheard
 
Signatur = Anzahl un Typen der Parameter und des Rückgabewertes

XPLOSIV 31. Aug 2007 09:56

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 ;)

mkinzler 31. Aug 2007 10:01

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;

jim_raynor 31. Aug 2007 10:04

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.

XPLOSIV 31. Aug 2007 11:23

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:

mkinzler 31. Aug 2007 11:28

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.

XPLOSIV 31. Aug 2007 11:40

Re: XPLOSIVs Fragentheard
 
Zitat:

Zitat von mkinzler
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.


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 04:49 Uhr.
Seite 1 von 3  1 23      

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