| |
|
|
- Seite 1 - |
|
Stephie | So ich fange mal ganz langsam an und hoffe ihr kommt damit klar. Mein Programm soll offen sein für Erweiterungen. Daher habe ich einen Ordner Erweiterungen erstellt und einen Menupunkt der auch Erweiterungen heisst, keine Untermenus. In dem Ordner soll eine ini oder cfg -Datei erstellt werden können vom Anwender die auf eine Vorlage zugreift. Durch einen Text in der ini oder cfg-Datei soll mein Hauptprogramm erkennen das es ein untermenu unter Erweiterungen anzeigen soll. (Diese Art gibt es z.b. bei dem Prog Ahnenblatt mit den Plugins). Hier wäre z.b. so eine ini - cfg-Datei als Vorschlag. Die eingesetzten Befehle sind nur Vorgaben, sie können auch anders genannt werden (so wie es Profan oder die dll vorgeben würden).
Somit würde im Hauptfenster und Erweiterungen als Menupunkt html erscheinen, geht man auf html soll rechts daneben der untermenupunkt Help erscheinen und darunter Liste. Geht man dann auf Liste soll die Vorlage ausgeführt werden. Die sollte dann so z.B. aussehen.
%Font="ariel", 24'Schriftgröße
%Text="Personenblatt"
%Font="ariel", 12
%Text=Name$'sind in meinem Prog vordefiniert
%Text=GebDatum$+" in "+GebOrt$
%Linie= 10,10 - 10,200'Beginn links - Ende rechts
%Pic=Personbild$
%End
Es sollten nach Möglichkeit einige Befehle sein, damit man frei kreieren kann.
Hab ihr eine Vorstellung wie man so etwas hinbekommt bzw. was man dafür braucht ? Wenn ich gute Vorschläge habe weis ich auch, das ich viel Lesen ausprobieren muss, aber ich habe Zeit und brauche nur eine zündelnde Idee. |
|
|
| |
|
|
|
« Dieser Beitrag wurde als Lösung gekennzeichnet. » |
|
|
|
|
| |
|
|
|
|
| Ich bin nicht sicher es richtig verstanden zu haben aber hab Dir was hingepinselt...
Download externer Download
PS: ... ich glaube Du meinst den Schriftartnamen "Arial". |
|
|
| |
|
|
|
Thomas Freier | Bin mir nicht sicher, ob es den Kern trift. Mit SubPopUp bekomme ich es nicht hin. Möglicherweise kann die dlgmenu.pcu ein SubPopUp einfügen und auch wieder löschen. Alles ohne *.ini, denn den Variablen a$, b$ kannst du ja den Werten zuweisen und auch in die *.ini zurückspeichern.
' für nur Zahlen
Def GetWindowLong(2) !"USER32", "GetWindowLongA"
Def SetWindowLong(3) !"USER32", "SetWindowLongA"
Def SetEditNumeric(1) SetWindowLong(@&(1),-16, (GetWindowLong(@&(1), -16) | $2002))
cls
UseFont "Arial",15,0,0,0,0
SETDIALOGFONT 1
var a$="111|Hilfe|1"
var b$="112|Info|0"
var c$="113| |0"
'usw.
PopUp "&Datei"
AppendMenu 100,"&Laden"
AppendMenu 101,"&Speichern"
AppendMenu 102,"&Neue Menüpunkte"
AppendMenu 103,"&Menüpunkte bearbeiten"
while 1
waitinput
case %key=2:BREAK
case MenuItem(100):Print "Laden"
case MenuItem(101):Print "Speichern"
case MenuItem(102): Z_MENU
case MenuItem(103): MENU_AEND
case MenuItem(111):Print a$
case MenuItem(112):Print b$
case MenuItem(113):Print c$
wend
Proc Z_MENU
' Menüpunkte löschen
RemoveMenu 111
RemoveMenu 112
RemoveMenu 113
' usw. und dann neu
case val(substr$(a$,-1,"|"))=1 : AppendMenu val(substr$(a$,1,"|")),substr$(a$,2,"|")
case val(substr$(b$,-1,"|"))=1 : AppendMenu val(substr$(b$,1,"|")),substr$(b$,2,"|")
case val(substr$(c$,-1,"|"))=1 : AppendMenu val(substr$(c$,1,"|")),substr$(c$,2,"|")
'usw.
EndProc
Proc MENU_AEND
var dlg%=Createdialog(%hwnd,"Menü erstellen",100,100,300,300)
var box%=Create("GridBox", dlg%, "N;0;40;Text;0;160;aktiv;0;50", 1, 10, 10, 280, 200)
Create("Tooltip",%hwnd,box%,"Bitte eine Zeile wählen")
AddString(box%,a$)
AddString(box%,b$)
AddString(box%,c$)
'usw.
var Ed1%=CreateEdit(dlg%,"",50,216,160,22)
var Ed2%=CreateEdit(dlg%,"",214,216,50,22)
SetEditNumeric(Ed2%)'nur Ziffereingaben erlauben
@sendmessage(Ed2%,$00C5,1,0)'und auf 1 Stelle begrenzt
var Sp1%=CreateButton(dlg%,"Speichern",210,242,80,20)
var Neu1%=CreateButton(dlg%,"Ändern",110,242,80,20)
var x%=-1
while 1
waitinput
x%=GetCurSel(box%)
case %key=2:BREAK
If GetFocus(box%) AND (x% > -1)
SetText Ed1%,Substr$(GetString$(box%,x%),2,"|")
SetText Ed2%,Substr$(GetString$(box%,x%),-1,"|")
ElseIf GetFocus(Neu1%)
case val(GetText$(Ed2%))>0 : SetText Ed2%,"1"
SetText box%, x%, 1, GetText$(Ed1%)' 1. Spalte ist 0 !!
SetText box%, x%, 2, GetText$(Ed2%)
ElseIf GetFocus(Sp1%)
a$=GetString$(box%,0)
b$=GetString$(box%,1)
c$=GetString$(box%,2)
'usw.
' und neu
Z_MENU
EndIf
wend
DestroyWindow(dlg%)
SetFocus(%hwnd)
EndProc
|
|
|
| |
|
|
|
Stephie | Hallo Thomas, also deine Version kommt leider nicht dahin, was ich brauche, aber sehr interessant. Habe es mir mal als Beispiel abgespeichert.
Zu Dir iF, Ja, das ist genau so etwas in der Richtung wie ich es suche. Für diesen Vorkampf schonmal ein DANKE, Hilft mir schon wieder einen großen Schritt weiter. Jetzt nur die Frage: Welche Befehle kann ich dort platzieren, damit er mir z.B. wie oben Beschrieben so ein Personenblatt ausgibt auf Drucker oder am Bildschirm (Bildschirm wäre mir natürlich lieber, da ich das mit dem Drucker schon soweit dann selber hinbekomme). Die ini soll entweder selbst die Vorlage enthalten, oder diese seperat als z.B. Personenblatt.txt aufrufen und ausführen. Und Ja mit "Ariel" meinte ich die Schriftart (Font).
Das ist etwas was jetzt noch meinen Horizont bezgl Profan übersteigt. Aber dank eurer bisherigen Hilfe ist mein Ahnenprogramm, für meine Verhältnisse schon extrem weit. Ich hoffe das ich euch spätestens zu Weihnachten meine erste beta-Version dann vorstellen kann. |
|
|
| |
|
|
|
Thomas Freier | So etwas?
Def GetSysColor(1) !"USER32","GetSysColor"
Declare Ende%
Declare a$[]
Declare a%
a%=2' Anzahl der Personen aus der INI
a$[1]="Meyer"' Personen aus der INI
a$[2]="Wassermann"
cls GetSysColor(15)
' Font für alle Fenster und Objekte, die mit "Create..." erstellt werden, festlegen
UseFont "Arial",15,0,0,0,0
SETDIALOGFONT 1
PopUp "&Datei"
AppendMenu 109,"&Ende"
PopUp "&Bearbeiten"
WhileLoop a%
AppendMenu (1000+&loop),a$[&loop]
EndWhile
Clear Ende%
WhileNot Ende%
WaitInput
If @MenuItem(109)
Ende% = 1
ElseIf (%MenuItem >1000) AND (%MenuItem < 2000)'1001 bis 1999 reserviert für Personen
Info %MenuItem
EndIf
EndWhile
End
Proc Info
Parameters y%
var pt%=CreateText(%hwnd,a$[y%-1000],10,10,200,20)
var M_Ed%=CreateMultiEdit(%hWnd,a$[y%-1000],10,40,600,-300)
' Datei öffnen und ins Multiedit ..Datei könnte a$[y%-1000].txt heißen
var M_Close%=CreateButton(%hwnd,"Beenden",400,10,80,20)
' weiteren für SPEICHERN, LÖSCHEN, usw.
var End_MEd%=0
SetFocus(M_Ed%)
WhileNot End_MEd%
Waitinput
case GetFocus(M_Close%):End_MEd%=1
' Speichern, Löschen, usw.
EndWhile
DestroyWindow(pt%)
DestroyWindow(M_Close%)
DestroyWindow(M_Ed%)
EndProc
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
Stephie | Danke iF, Du hast verstanden was ich suche und auch ein verdammt gutes Beispiel gegeben. Jetzt muss ich mich erstaml damit auseinander setzen und schauen in wie weit ich dieses in meinen Code einbauen kann.
Nochmals DANKE, ich hatte echte nicht gedacht, das es jemand so schnell schafft.
Ich schließe jetzt den Beitrag erstmal. |
|
|
| |
|
|
|
| |
|
| |
|
|