Dialogbutton aus Erweiterung fehlt

Hallo,

ich habe das Beispiel für die Erweiterung aus dem Dialog Designer Handbuch an mein Projekt angepasst, aber leider wird der Button für den Dialog nicht in die Buttonbar des Views übernommen.

Beim Aktivieren der Erweiterung wird lediglich ein "Space" eingefügt, obwohl der richtige Button im Make-Script entnommen wurde.

Leider ist es mir programmtechnisch nicht möglich die korrekte Entnahme des Buttons aus dem SELF Objekt im Install-Script zu überprüfen.

Danke im vorraus!

Mike
So ganz ohne Sicht ist das schwer zu erraten. Poste doch mal dein Make- und dein Install-Skript.
Hallo Maxilla,

danke für die schnelle Reaktion!

Das Make-Script:

+++

SelectedFeaturesExt = Extension.Make(
"C:\Home\ext\SelectedFeatures.avx".AsFileName,
"Selected Features",
av.FindScript("SelectedFeaturesExt.Install"),
av.FindScript("SelectedFeaturesExt.Uninstall"),
{"$AVBIN/avdlog.dll".AsFileName})

SelectedFeaturesExt.SetExtVersion(1)
SelectedFeaturesExt.SetAbout("Selected Features dialog (v1)")
SelectedFeaturesExt.SetUnloadScript(av.FindScript( "SelectedFeaturesExt.Unload"))
SelectedFeaturesExt.SetCanUnloadScript(av.FindScri pt("SelectedFeaturesExt.CanUnload"))

aDialog = av.FindDialog("SelectedFeatures")
aDialog.SetServer(nil)
aDialog.FindByName("lbx_Records").Empty
aDialog.FindByName("cbx_Themes").Empty
SelectedFeaturesExt.Add(aDialog)

SelectedFeaturesExt.Add(av.FindGUI("View").GetButt onBar.GetControls.Get(25))

for each aDoc in av.GetProject.GetDocs
if (aDoc.Is(SEd)) then
if (aDoc.GetName.Contains("SelectedFeatures.")) then
if (aDoc.IsCompiled.Not) then
aDoc.Compile
end
SelectedFeaturesExt.Add(av.FindScript(aDoc.GetName ))
end
end
end

SelectedFeaturesExt.Commit

+++

Das Install-Script:

+++

if (av.GetProject = nil) then
return nil
end

myButton = self.Get(1)
viewGUI = av.GetProject.FindGUI("View")
viewGUI.GetButtonBar.Add(myButton, 0)
viewGUI.SetModified(TRUE)

+++

Eigentlich müsste der Button ja an die 1. Stelle eingefügt werden, aber den "Space" macht er an die 2. oder 3. Position!?

Mike
Oki, Vermutung: Hast du dich vielleicht im Make-Script verzählt, so dass dort eigentlich blabla.GetControls.Get(24) statt 25 stehen sollte (...du musst ja bei Null anfangen zu zählen...)?

Um den Button ganz nach vorne zu stellen musst du im Install übrigens Add(myButton, -1) schreiben...
Nein, ich habe mich nicht verzählt, denn ich habe den korrekten Wert über eine Messagebox testweise ausgeben lassen.
Leider habe ich keine Methode für das Installscript gefunden, da das SELF Objekt ja noch nicht initialisiert ist und somit nicht abgefragt werden kann.

Nachdem ich den Wert auf -1 geändert habe(danke für den Tip) ist komischerweise der Button endlich aufgetaucht. Als ich dann wieder auf 0 gestellt habe war er auch dann an der richtigen Position.

Erklären kann ich dieses Phänomen allerdings nicht!?

Mike
Hmja, seltsam...

Vielleicht noch ein paar Kommentare:

Bei einem einzigen Button mag's ok sein, aber oft ist es übersichtlicher, die Buttons im Make-Script über FindByScript zu suchen, also:

theButton = (av.FindGUI("View").GetButtonBar.FindByScript("Scriptname"))
SelectedFeaturesExt.Add(theButton)


Nicht jedes Nutzers Sache ist es, wenn neue Buttons vorne in der Buttonbar auftauchen - da ist ja normalerweise der Speichern-Button und die gewohnheitsbedingt reflexhafte Mausführung möchte nicht von jeder geladenen Erweiterung neu in die Irre geführt werden. Aber das ist Geschmackssache...

Bis denne, Mx.
Deinen Tip verstehe ich nicht ganz.

Über welches Script soll ich den Button denn suchen?
Der Button ist doch manuell in die Buttonbar gekommen!
Oder meinst du das Click-Script?
Es gibt ja leider keinen eindeutigen Namen für die einzelnen ButtonObjekte.

Ja über die Anordnung der Buttons kann man streiten. Es wäre sicher am günstigsten diesen soweit wie möglich auf die rechte Seite zu bringen.

Mike
Ja, das Clickscript des Buttons. Damit lässt sich jeder Button eindeutig finden (es sei denn, das Script ist mehrfach angebunden - aber das sollte ja eher nicht der Fall sein)...

Die "rechte Seite" im Installscript:

derLetzte = viewGUI.GetButtonBar.GetControls.Count - 1
viewGUI.GetButtonBar.Add(myButton, derLetzte)