| |
|
|
- Seite 1 - |
|
GDL | @ Hallo Roland,
Ich habe mir mit Hilfe deiner Klasse einen Einfachsteditor für mein Atmelprogramm gezimmert. Es klappt auch alles wunderbar, bis auf Eines:Ich möchte immer den aktuelle Zeileninhalt in zeile$ haben.
Ich nehme mal an, dass das mit dem Teil zu tun hat. KompilierenMarkierenSeparieren
Proc XSciProf.GetLine
Return Int(.SciMessage(~SCI_LINEFROMPOSITION, .SciMessage(~SCI_GETCURRENTPOS, 0, 0), 0) + 1)
EndProc
Proc XSciProf.GetLine$
Parameters Nr%, Z$
Declare Len%, Zeile#
Dim Zeile#,32767
Len% = .SciMessage(~SCI_GETLINE, Nr%, Zeile#)
Z$ = Translate$(Char$(Zeile#,0,Len%-1), ,Space$(XSciProf.Tab%))
Dispose Zeile#
Return Z$
EndProc
Die aktuelle Zeilennummer geht einwandfrei, aber dann blicke ich nimmer durch. Du deklar. erst zeile# du dimensionierst anschliessend zeile# liest aber nichts ein in zeile# arbeitest dann aber mit zeile# weiter.
Danke für deine Hilfe
Servus Georg |
|
|
| |
|
|
| |
|
- Seite 2 - |
|
|
GDL | geht als Einzelbefehl nicht und in Kombination mit setfocus auch nicht. |
|
|
| |
|
|
|
GDL | |
|
| |
|
|
|
Jörg Sellmeyer | Was heißt Einzelbefehl? Das ist eine Funktion - mit SetActiveWindow(hdl&) setzt Du ein Control aktiv. Ich habe mit Rolands Code nochmal getestet. Dort funktioniert SetFocus. Du mußt also einen Fehler irgendwo eingebaut haben. Hast Du die Ergänzug zu meinem vorigen Beitrag gelesen? |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 24.10.2007 ▲ |
|
|
|
|
GDL | mom hat sich alles überschnitten in den Postings.
melde mich wieder. |
|
|
| |
|
|
|
GDL | Habe keine Klasse, sondern nur 1 Fenster.
Betrifft menuitem, und clicked
dies geht , wenn vorher mit getfocus ein anderes Control aufgerufen wurde KompilierenMarkierenSeparieren |
|
|
| |
|
|
|
Jörg Sellmeyer | Ich glaube, wir reden aneinander vorbei. Am Besten Du postest mal ein lauffähiges Beispiel, an dem man das nachvollziehen kann. Wie gesagt: Im XProfEd funktioniert es. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 24.10.2007 ▲ |
|
|
|
|
GDL | jo, geht aber erst im Laufe der Nacht. |
|
|
| |
|
|
|
Jörg Sellmeyer | Alles klar, ich bin eh ne nachteule |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 24.10.2007 ▲ |
|
|
|
|
GDL | Nun geht durch Zufall alles, wenn ich vor waitinput nen setfocus(edit&) einsetze. KompilierenMarkierenSeparieren
whilenot ende%
setfocus(edit&)
waitinput
if (%umessage=16) or (menuitem(450))
aufraeumen
ende%=1
elseIf %wmNotify and (%NotifyCode = ~SCN_MARGINCLICK)
I% = sendmessage(edit&,~SCI_POSITIONFROMPOINT,0,%MouseY - 80)
Der Wert 80 in obiger Zeile wurde durch Testen ermittelt.Sonst geht
Aufklappen nicht richtig !
I% = sendmessage(edit&,~SCI_LINEFROMPOSITION,I%,0) + 1
sendmessage(edit&,~SCI_TOGGLEFOLD,I%,0)
ElseIf MenuItem(13) Enter-Taste
if not(sendmessage(edit&,~SCI_GETLINEVISIBLE,aktuellezeile_(), 0)) gefaltet
sendmessage(edit&,~SCI_TOGGLEFOLD,aktuellezeile_(), 0)
endif
sendmessage(edit&,~SCI_ADDTEXT, 2, Addr(CRLF$))
CRLine% = aktuellezeile_() - 1
i% = sendmessage(edit&,~SCI_GETLINEINDENTATION, CRLine% - 1, 0)
sendmessage(edit&,~SCI_SETLINEINDENTATION, CRLine%, I%)
i% =sendmessage(edit&,~SCI_GETLINEINDENTPOSITION, CRLine%, 0)
sendmessage(edit&,~SCI_GOTOPOS, i%, 0)
zeile_ermitteln
Das es nun geht ist bestimmt nen Doppelfehler, der sich dann aufhebt.Wichtig iss, dass mein Zusammengesuche ausm Xprofed überhaupt geht. Bin immer noch am Suchen warum das waitinput durchbrochen wird.Wird das in der XProfed Klasse schon festgelegt?
Servus Georg |
|
|
| |
|
|
|
GDL | Habe noch weiter rumprobiert.
setfocus(edit&) oder setfocus(editor_&) kann nach waitinput ,in den einzelnen Abfragen,so oft stehen wie es mag, es geht nicht.Steht es aber vor waitinput geht alles.
Servus Georg |
|
|
| |
|
|
|
GDL | @ Jörg,
habe mal alles soweit zusammengefasst,soweit ich bis jetzt bin.Die Exe ist lauffähig.Alle code liegen bei.Im Ordner 01test laufen lassen.
Servus Georg |
|
|
| |
|
|
|
Jörg Sellmeyer | GDL
Habe noch weiter rumprobiert.
setfocus(edit&) oder setfocus(editor_&) kann nach waitinput ,in den einzelnen Abfragen,so oft stehen wie es mag, es geht nicht.Steht es aber vor waitinput geht alles.
Servus Georg
Du hättest es gar nicht nach einzelnen Abfragen setzen müssen, sondern nach der If-Struktur in der Hauptschleife. KompilierenMarkierenSeparieren Ist aber letzendlich egal. Ich würde nur die Variable editor_& nicht global definieren, sondern innerhalb der Prozedur. Dann müssen zwar alle weiteren, Prozeduren, die das Control beeinflussen noch in der ersten Zeile ein Parameters editor_&,...,... haben, aber Du hast dann die Prozeduren schön gekapselt und kannst bei Bedarf weitere Editcontrols in Deinem Programm erzeugen. Deine Includedatei wird einfach flexibler. Gruß Jörg |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 24.10.2007 ▲ |
|
|
|