| Autor |
Beitrag |
webmaker
      
Beiträge: 205
|
Verfasst: Mo 27.01.03 22:41
Hallo - ihc schon wieder
Also ich habe zwei Fragen zu den Syneditkomponenten.
Die erste ist relativ simpel (glaub ich zumindest), wie kann ich mit dem Curser z.b. auf Zeile 5 Spalte 127 springen?
Nr 2)
und zwar möchte ich gerne die SynAutoComplete-Komponente der Synedit-Komponenten nutzen, jedoch habe ich verschiedene Syntax-Highlighter und nutze die SynMultiSyn-Kompo.. Wie mache ich das jetzt, dass immer (je nach Highlighter) das richtige menü (SynAuto-Kompo) aufpopt? Ich habe mir überlegt, dass man diese Items in dem Menü in eine externe Datei ausgelagert werden könnten. Nur dann stellt sich die Frage, welcher Highlighter gerade läuft und welches Event man nutzen könnte, um das Menü zu ändern??
Vielen Dank schonmal in voraus
_________________ .::Wissen ist Macht, nichts wissen macht nichts::.
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Di 28.01.03 00:50
Hallo!
Zu 1:
Das SynEdit verfügt über die beiden Eigenschaften CaretX und CaretY. Über diese beiden Eigenschaften kannst Du den Cursor zum Beispiel auf Zeile 5 und Spalte 127 setzen.
Zu 2:
Wenn Du den Highlighter für das SynEdit wechselt kannst Du doch direkt danach über die Methode LoadFromFile von der Eigenschaft AutoCompleteList die ensprechende Liste für die AutoComplete-Funktion laden.
Gruß
TINO
|
|
webmaker 
      
Beiträge: 205
|
Verfasst: Di 28.01.03 15:53
zu 2)
ja das ist klar, nur die Komponente Multisyn.... das automatisch und da ist das Problem. Hast du da eine Idee?
zu 1) Werde ich mir anschauen
//Nachtrag:
Habe mir Nr.1 angeschaut, nur funktioniert das nicht wirklich. Wenn ich ein Button auf der Form mache, auf der die Synedit ist, dann scheint es zu funktionieren. Aber sonst nicht.
Also ich habe mein Synedit auf ein MDIChildfenster, wenn ich jetzt von einem anderen Fenster das mache dann kommt zwar kenie Fehlermeldung, es tut sich aber auch ncihts. Woran könnte das liegen?
Und nocheine Frage, wie kann ich dann diese Zeile markieren?
_________________ .::Wissen ist Macht, nichts wissen macht nichts::.
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Di 28.01.03 16:59
| webmaker hat folgendes geschrieben: | | nur die Komponente Multisyn.... das automatisch und da ist das Problem. |
Wo ist das Problem?
| webmaker hat folgendes geschrieben: | | Habe mir Nr.1 angeschaut, nur funktioniert das nicht wirklich. Wenn ich ein Button auf der Form mache, auf der die Synedit ist, dann scheint es zu funktionieren. |
Also funktioniert das mit den Eigenschaften CaretX und CaretY.
| webmaker hat folgendes geschrieben: | | Also ich habe mein Synedit auf ein MDIChildfenster, wenn ich jetzt von einem anderen Fenster das mache dann kommt zwar kenie Fehlermeldung, es tut sich aber auch ncihts. |
Das ist jetzt aber ein ganz anderes Problem. Poste mal den Code mit dem Du die Zeile und Spalte setzen möchtest.
| webmaker hat folgendes geschrieben: | | Und nocheine Frage, wie kann ich dann diese Zeile markieren? |
Ich denke mal BlockBegin und BlockEnd, oder? Schau einfach mal in die Unit SynEdit.pas!
Gruß
TINO
|
|
webmaker 
      
Beiträge: 205
|
Verfasst: Di 28.01.03 17:29
hier meine Procedure zum herausfinden der Zeilennr und Spaltennr. sowie zum Zeilespringen:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| procedure Tvalidator.ListBox1Click(Sender: TObject); var i, Y : Integer; temp : String; begin temp := ListBox1.Items[ListBox1.ItemIndex]; Delete(temp, 1 , 5); i := Pos(' column', temp); Delete(temp, i , Length(temp)); Y := StrToInt(temp); temp := ListBox1.Items[ListBox1.ItemIndex]; i := Pos(IntToStr(Y), temp); i := i + Length(IntToStr(Y)) + 7; Delete(temp, 1, i); i := Pos(' - ', temp); Delete(temp, i, Length(temp)); if ActiveMDIChild is TEditForm then begin TEditForm(ActiveMDIChild).Editor.CaretY := Y; TEditForm(ActiveMDIChild).Editor.CaretY := StrToInt(temp); // TEditForm(ActiveMDIChild).Editor.Se end; end; |
ICh habe das auch schon mit beliebigen WErten versucht, also am herausfinden der Werte liegt es nciht. Editor ist die Synedit-Kompo.
Zu 2)
ICh weiß immer noch nicht welches Event, ich nehmen soll, um den Autocomplete Komponente bzw deren Inhalt zu wechseln
_________________ .::Wissen ist Macht, nichts wissen macht nichts::.
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Di 28.01.03 17:59
Versuch es mal so:
Quelltext 1: 2: 3: 4:
| {...} TEditForm(ActiveMDIChild).Editor.CaretY := Y; TEditForm(ActiveMDIChild).Editor.CaretX := StrToInt(temp); {...} |
Gruß
TINO
|
|
webmaker 
      
Beiträge: 205
|
Verfasst: Di 28.01.03 20:56
meinst du die if-Abfrage vorher weglassen?
wenn ja: Es kommt dann folgende Fehlermeldung (genau an der Stelle: TEditForm(ActiveMDIChild).Editor.CaretY := Y
Quelltext 1: 2: 3: 4: 5: 6: 7:
| --------------------------- Benachrichtigung über Debugger-Exception --------------------------- Im Projekt textedit.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 004FD37B in Modul 'textedit.exe'. Lesen von Adresse 00000438'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen. --------------------------- OK Hilfe --------------------------- |
Daran lag es auch nicht
_________________ .::Wissen ist Macht, nichts wissen macht nichts::.
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Mi 29.01.03 11:03
| webmaker hat folgendes geschrieben: | | meinst du die if-Abfrage vorher weglassen? |
Nein!
Du hast folgende Zeile Code gepostet:
Quelltext 1:
| TEditForm(ActiveMDIChild).Editor.CaretY := StrToInt(temp); |
Ich habe folgende Zeile Code gepostet:
Quelltext 1:
| TEditForm(ActiveMDIChild).Editor.CaretX := StrToInt(temp); |
Jetzt such mal nach dem Unterschied
Gruß
TINO
|
|
webmaker 
      
Beiträge: 205
|
Verfasst: Mi 29.01.03 15:51
oh stimmt.....werd mal schauen
//Nachtrag läuft aber immer noch nicht....
_________________ .::Wissen ist Macht, nichts wissen macht nichts::.
|
|
webmaker 
      
Beiträge: 205
|
Verfasst: Mi 29.01.03 22:33
ich habe nochwas herausgefunden und zwar wenn ich schreibe EditForm.Editor.Caret...... dann scheint es zu funktionieren, allerdings nur auf dem ersten MDIChild und nciht auf dem aktuellen. HAbt ihr da noch eine IDee?
_________________ .::Wissen ist Macht, nichts wissen macht nichts::.
|
|