 |
 |

 |
Eine Toolbar mit MDX (6.0x) Dieses Tutorial beschäftigt sich mit der Problematik eine Toolbar mit MDX zu erstellen und über die mIRC interne zu setzen. Es gibt diverse andere Wege um zu einer "eigenen" Toolbar zu kommen, welche ich hier aber ausser Betracht lasse. Benötigen tun wir neben der neusten mIRC Version (6.03) MDX welches in der Beta 0.92 vorliegt sowie DMU (v1.62).
Schritt 1: Der Dialog
Zuerst erstellen wir nun einen Dialog mit einem List-Objekt welcher uns als Toolbar dienen soll.
01) dialog toolbar {
02) option dbu
03) size 0 3 300 0
04) list 1, 0 1 300 11, size
05) }
Bezüglich der Werte vertrauen wir wieder auf meinen Erfahrungen und machen gleich weiter indem wir uns ein Alias schreiben um diesen Dialog öffnen zu können.
01) alias toolbar { dialog $iif($dialog(toolbar),-c,-m) toolbar toolbar }
Ein erster Test (/toolbar) bringt uns dann zu diesem Ergebnis. Schliessen können wir den Dialog dann mit wiederholter eingabe des Befehls.
Schritt 2: Erstellen der Buttons
Wie immer mit MDX wir der wichtigste Teil im Init Event des Dialoges erledigt. Zuerst jedoch erstellen wir uns zwei Aliase:
01) alias mdx { dll pfad\zur\mdx.dll $1- }
02) alias dmu { dll pfad\zur\dmu.dll $1- }
Mit diesen können wir nun im oben genannten Einleitungsprozess des Dialoges arbeiten:
01) on *:dialog:toolbar:init:*: {
02) mdx SetMircVersion $version
03) mdx MarkDialog $dname
04) mdx SetDialog $dname style
05) mdx SetControlMDX $dname 1 ToolBar flat nodivider > pfad\zur\bars.mdx
06) mdx SetBorderStyle $dname 1
07) }
Die ersten beiden Befehle ermöglichen uns erst die Arbeit mit MDX, der dritte sorgt dafür das unsere Toolbar keine Titelleiste mehr hat, die brauchen wir ja schliesslich nicht. In der fünften Zeile entsteht aus unserem List eine Toolbar, hierzu haben wir mehrere "Styles" also Attribute, die wären:
flat - Flache Buttons
list - Der optionale Text wird rechts neben dem Button angezeigt
nodivider - Verhindert das oben 2 Pixel Leeraum erstellt werden
arrows - Lässt uns Buttons mit DropDown Menü erstellen
Der Befehle "SetBorderStyle" in Zeile 6 sorgt nun dafür das eben dise Border nicht angezeigt wird. Zwischenstand.
Das war aber noch längst nicht alles, nun werden die Icons, die wir brauchen, im selben Event geadded. Dazu stehen uns 2 Befehle zur Verfügung, mit dem ersten legen wir die Grösse fest, der zweite dient zum laden der Icons:
01) did -i $dname 1 1 bmpsize [width] [height]
02) did -i $dname 1 1 setimage icon [type] [icon]
Für diese Befehle gibt es wieder einiges an Optionen die für uns aber momentan uninteressant sind, nachlesen kann man die natürlich in der MDX Help. Wir adden jetzt anhand dieser Befehle unsere Icons:
01) did -i $dname 1 1 bmpsize 16 16
02) did -i $dname 1 1 setimage icon small connect.ico
03) did -i $dname 1 1 setimage icon small disconnect.ico
04) did -i $dname 1 1 setimage icon small options.ico
Den Inhalt der Toolbar erstellen wir jetzt mithilfe des Befehls did -a $dname 1 [attr] [icon] [button text] $chr(9) [tooltip text]
01) if ($status == disconnected) { did -a $dname 1 +a 1 $chr(9) $+ Connecten }
02) else { did -a $dname 1 +a 2 $chr(9) $+ Disconnecten }
03) did -a $dname 1 -
04) did -a $dname 1 +a 3 $chr(9) $+ Options
Die ersten beiden Zeilen adden je nachdem ob wir Online oder Offline sind unser erstes Icon. Zeile 2 erstellt uns einen Seperator und die letzte Zeile erstellt einen weiteren Button mit dem dritten Icon. Das ganze sollte jetzt so aussehen.
Wir fügen jetzt noch einige Buttons ganz nach unseren Bedürfnissen hinzu und nutzen am Ende folgenden Befehl um die Toolbar an den richtigen Ort zu befördern.
01) dmu BarAdd toolbar > $dname
Danach sollte es etwa so aussehen: Bild.
Schritt 3: Die Funktionen
Jetzt ist das jedoch noch nicht "benutzbar", deshalb legen wir ein Sclick Event für den Dialog an welches in meinem Beispiel wie folgend aussehen würde.
01) on *:dialog:toolbar:sclick:1: {
02) if ($did(1).sel == 2) {
03) if ($status == disconnected) { scid $activecid | server | did -o $dname 1 2 +a 2 $chr(9) $+ Disconnecten }
04) else { scid $activecid | quit | did -o $dname 1 2 +a 1 $chr(9) $+ Connecten }
05) }
06) elseif ($did(1).sel == 4) { sendkey ALT O }
07) elseif ($did(1).sel == 5) { options }
08) elseif ($did(1).sel == 7) { sendkey ALT J }
09) elseif ($did(1).sel == 9) { systeminfo }
10) elseif ($did(1).sel == 10) { logviewer }
11) elseif ($did(1).sel == 12) { readme }
12) elseif ($did(1).sel == 14) { mdi -t }
13) elseif ($did(1).sel == 15) { mdi -c }
14) }
Auch wenn es auf den ersten Blick evt. verwirrend aussieht ist das ganz simpel aufgebaut. Klicks die auf dem Objekt 1 (unserem List) eingehen werden überprüft auf welche Zeile (Button in diesem Fall) sie gemacht wurden. Hier gilt es zu beachten das alle Werte um eins erhöht sind (wie immer bei MDX), das heisst Button 1 liegt in Zeile 2.
In den ersten Zeilen finden wir unseren Connect/Disconnect Button wieder. Es wird einfach nur gecheckt ob wir online sind oder nicht, wenn ja quiten wir und ändern mit did -o (overwrite) unseren Button. Der Befehl ist vom Syntax genauso wie beim adden des Buttons, nur das wir diesmal die Button Nummer mit angeben.
01) did -o $dname 1 [button] [attr] [icon] [text] $chr(9) [tooltip]
Die restlichen Zeilen sollten nun klar verständlich sein, sie führen auch alle nur simple Aliase aus. Ein Alias welches man für die Toolbar meist gebrauchen kann ist das oben zu sehende /sendkey Alias, mit eben diesen können wir Shortcuts nachstellen und somit zum Beispiel die mIRC Options öffnen.
01) sendkey {
02) showmirc -s
03) var %key = $replace($1,SHIFT, ,CTRL,^,ALT,%) $+ $lower($2-)
04) var %name = sendkeys $+ $ticks
05) .comopen %name WScript.Shell
06) if (!$comerr) {
07) var %temp = $com(%name,SendKeys,3,bstr,%key)
08) .comclose %name
09) }
10) return 0
11) }
Mit diesem Alias lassen sich längst nicht alle Kombinationen nachstellen, für unsere Toolbar reicht es aber. Desweiteren lohnt es sich auch den von mir genutzten Befehl /mdi in dem mIRC Help File nachzulesen.
Schritt 4: Aktualisierung
Die meisten werden nun schon gedacht bzw. gehofft haben das wir fertig sind, dem ist aber nicht so. Wir müssen noch einige Events einbaun damit unser Connect/Disconnect Button auh immer aktuell ist.
01) on *:CONNECT: { if ($dialog(toolbar)) { did -o toolbar 1 2 +a 2 $chr(9) Disconnecten } }
02) on *:DISCONNECT: { if ($dialog(toolbar)) { did -o toolbar 1 2 +a 1 $chr(9) Connecten } }
03) on *:ACTIVE:*: { if ($dialog(toolbar)) { if ($status != disconnected) { did -o toolbar 1 2 +a 2 $chr(9) Disconnecten } | else { did -o toolbar 1 2 +a 1 $chr(9) Connecten } } }
Die ersten beiden sollten jedem klar sein, das dritte checkt immer wenn wir das Fenster wechseln ob wir connected sind oder nicht und ändert dementsprechend das Icon, nun ist unsere Toolbar auch schon Multiserver fähig und wir fertig!
Stand: 2003-01-03 (Update: 2003-04-23) | |
|  | 
|
|  |