Autor Beitrag
webmaker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205



BeitragVerfasst: Di 28.01.03 17:29 
hier meine Procedure zum herausfinden der Zeilennr und Spaltennr. sowie zum Zeilespringen:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Di 28.01.03 17:59 
Versuch es mal so:
ausblenden Quelltext
1:
2:
3:
4:
{...}
  TEditForm(ActiveMDIChild).Editor.CaretY := Y;
  TEditForm(ActiveMDIChild).Editor.CaretX := StrToInt(temp);
{...}

Gruß
TINO
webmaker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205



BeitragVerfasst: 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;)
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mi 29.01.03 11:03 
webmaker hat folgendes geschrieben:
meinst du die if-Abfrage vorher weglassen?

Nein!

Du hast folgende Zeile Code gepostet:
ausblenden Quelltext
1:
TEditForm(ActiveMDIChild).Editor.CaretY := StrToInt(temp);					

Ich habe folgende Zeile Code gepostet:
ausblenden Quelltext
1:
TEditForm(ActiveMDIChild).Editor.CaretX := StrToInt(temp);					

Jetzt such mal nach dem Unterschied :-)

Gruß
TINO
webmaker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205



BeitragVerfasst: Mi 29.01.03 15:51 
oh stimmt.....werd mal schauen :oops:
//Nachtrag läuft aber immer noch nicht....

_________________
.::Wissen ist Macht, nichts wissen macht nichts::.
webmaker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205



BeitragVerfasst: 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::.