ActiveX - Textcontrol bzw. TE-Control

Nutzung, Komponenten, .NET

Moderator: Moderatoren

Antworten
Benutzeravatar
ecz
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 23
Registriert: Di, 20. Nov 2007 15:12
Wohnort: Burgstall-Maria Anzbach
Kontaktdaten:

ActiveX - Textcontrol bzw. TE-Control

Beitrag von ecz »

hallo !

stehe gerade vor der aufgabe einen halbwegs leistungsfähigen editor in eine xbase-applikation einbetten zu müssen und habe hier von zwei modulen gehört (auch der devcon): http://www.textcontrol.com/ und den TER http://www.subsystems.com/.

habt ihr vielleicht ein ganz einfaches code-beispiel, wie ich hier etwas einbinden kann ? von textcontrol weiß ich, dass es mit alaska verwendet wird.

ich suche sehnsüchtig einen einstieg in die welt des activeX :-)

lg
ernst
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Ernst.

Wir benutzen TX Text Control schon seit etwa fünf Jahren (vor Xbase++ 1.9 mit JazzAge). Es besteht aus genaugenommen vier Komponenten, nämlich einmal dem Textfeld selbst (CLSID TIS.TX.TextControl.nn, wobei nn die Versionsnummer ist - aktuell 14) und dann einer ButtonBar, einer StatusBar und einem Ruler (alles beliebig kombinierbar). Die Erzeugung ist ganz einfach:

Code: Alles auswählen

oTxControl := XbpActiveXControl():new( oDlgArea )
oTxControl:CLSID := 'TIS.TX.TextControl.nn'
oTxControl:license := 'HIERDEINLICENSESTRING'
oTxControl:create(oDlgArea,,{0,0},{w,h} ) // w = width, h = height
Danach übergibt man Texte an das Control oder erzeugt ein Menü, mit dem Texte (alle Formate, auch das neue Word-XDOC) eingelesen werden können. Dafür gibt es tonnenweise Methoden, alles sehr ausführlich dokumentiert. Sehr stabil in der täglichen Anwendung. Wir betten sogar eigene Kontextmenüs (für den Zugriff auf unser Textbausteinsystem) ein, funzt einwandfrei. Beispiel:

Code: Alles auswählen

oTxControl:RbDown  := { |mp1, mp2, obj|oTxMenu:PopUp ( oDlgArea, mp1 , 1 ) }
Für mehr Code müßte ich wissen, was Du tun willst. Es gibt bei uns fast keine handelsüblichen Memofelder mehr, sondern fast nur noch TX-Controls, die jeweils RTF-Text darstellen oder bearbeitbar halten, der als Memo abgespeichert wird.
Herzlich,
Tom
Benutzeravatar
ecz
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 23
Registriert: Di, 20. Nov 2007 15:12
Wohnort: Burgstall-Maria Anzbach
Kontaktdaten:

Beitrag von ecz »

vielen dank tom !

also ein element mit textfeld, statuszeile, linie und button habe ich nun schon erzeugen können - aber irgendwo fehlt mir noch ein zusammenhang - vorallem mit der dokumentation:
zwar finde ich einen hinweis darauf, dass ich die objekte miteinander verbinden muss, aber nirgendwo die syntax, wie denn das bloß gehen möge :-(

anderes beispiel: wie spreche ich z.B.: TXTextControl.Alignment [= value] an ?

oder: wo finde ich in der dokumentation die info, wie die CLSID zu den objekten heißt ?

ihr merkt, ich bin ein activeX neuling :-)

lg
ernst
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Ernst.

1. Die Objekte sind über ihren Parent verbunden:

Code: Alles auswählen

oTxControl := XbpActiveXControl():new( [color=red]oDlgArea [/color])
2. Wenn Du Eigenschaften verändern willst, tust Du das einfach:

Code: Alles auswählen

oTXControl:FontSize := 12
zum Beispiel setzt die Schriftgröße für das Control (vorab) auf 12. Analog "FontName". Aber Eigenschaften wie das Alignment würde ich nicht hardcodiert setzen - dafür gibt es ja Controls innerhalb des Controls, zudem können einzelne Abschnitte verschiedene Ausrichtungen haben. Ansonsten geht es (vorab) wie oben genannt.

3. Wo Du in der Doku die ClassIds findest, weiß ich jetzt nicht. Sie lauten:

TIS.TX.ButtonBarControl.nn für die ButtonBar, analog StatusBar und RulerBar. Diese mußt Du aber um Dein eigentliches Control herum so positionieren, daß sie auch sichtbar sind.

Die Doku zu TX ist ziemlich umfangreich. "iVars" (oder "Properties") können einfach Werte zugewiesen werden, zum Beispiel:

Code: Alles auswählen

oTXButtonBar:Language := 49
setzt die Sprache für die ButtonBar auf deutsch (alles machen, bevor das Show() für den gesamten Dialog kommt!). Methoden ruft man einfach auf, zum Beispiel über ein Menü, das man hinzufügt. Eine Methode, die man dieserart aufrufen kann, ist die Undo-Funktion:

Code: Alles auswählen

oTxControl:Undo()
macht die letzte Textbearbeitung rückgängig. Undsoweiter undsofort. Das Control ist sehr mächtig und umfangreich. Wie gesagt: Doku lesen!
Herzlich,
Tom
Benutzeravatar
ecz
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 23
Registriert: Di, 20. Nov 2007 15:12
Wohnort: Burgstall-Maria Anzbach
Kontaktdaten:

Beitrag von ecz »

Vielen Dank nochmals !
Nun bin ich einen großen Schritt weiter - nachdem ich jetzt noch die "Verbindung" der Elemente mit (Beispiel für den Ruler)
oTxC:RulerHandle:=oTxRuler:hWnd gefunden habe, läuft alles fein !

Lg
Ernst
Antworten