Forum | | | | - page 1 - |
| Energizer | allô liebes forme ;), suis eh bien aussi récente dabei et à qui travail avec XProfan 11.2 Free (c'est doch qui aktuellste ou bien?)
Habe déjà un peu herumgestöbert et dank qui Aider vom XLehrbuch de Dietmar Horn aussi déjà kleinere Programme geschafft.
eh bien soll je pour une zwölfte super une Abiturrechner programmieren. cette soll so marcher, dass on alle Fächer inkl. Punkte eingibt et qui Abirechner anhand div. Vorgaben (Abiprüfungsfächer volonté 5-matière gewertet, chez l'élection einer Zusatzprüfung 4-matière etc.) qui Endpunktzahl errechnen.
eh bien suis je am Überlegen, comment on cela avec qui Eingabe am besten régulariser sollte. Am liebsten wäre mir oui eigentlich une Tabelle (ähnlich Excel) dans qui qui Anwender simple selber Werte eingebn peux. là je pour direct rien trouvé habe, voulais je cela ganze sur une le détour faire, indem qui Anwender dans vordefinierten CheckBoxen sa Fächer auswählt et cet ensuite sur qui Tabelle übertragen volonté. Ist es dabei possible trop définir, comment viele Checkboxen gewählt volonté dürfen?
peut-être peux mir quelqu'un de euch chez qui Solution cet Problems aider, bzw. mir sogar une encore bessere Solution pour qui Implementierung qui Userdaten dans mon Programme proposer.
Mfg Peter |
| | | | |
| | | | | - page 1 - |
| Energizer | @Thomas Freier: merci pour deine schnelle Aider! Votre erste Possibilité comme mir très bien, là werde je la fois quelque chose plus rumprobieren ;)
@H.Brill: aussi deine variante ist ähnlich qui de Thomas, je denke la fois là werde je mir quoi zusammenschustern ;)
1. Finde qui variante de Thomas aufgrund qui Funktion zum "sperren" einer Spalte très bien. avec welchem Befehl bekomme je ici eh bien une Vorgabetext hinein? Hätte mir gedacht là Vorgaben comment "LK1" etc. reinzuschreiben ... pour qui pas so avec savons bedachten gens ;)
Vielen Dank gens, son helft einem Débutant comment mir wirklich très! ;) |
| | | | |
| | Thomas Freier | Über qui Funktionen qui Listview.dll beim Anlegen qui Leerzeilen z.B.: KompilierenMarqueSéparation un Item avec SetItemText(H,T,S,L) . là XProfan 11.n verwendet wird, peut aussi qui Funktionen le Gridboxen verwendet volonté. |
| | | | |
| | Energizer | ok alors j'ai maintenant une Tabelle avec mehreren Spalten et zeilen, so comment je mir cela ganze wünsche ;) aussi avec vorschrift dans den feldern.
maintenant serait je seulement volontiers une einzelne la ligne et une einzelne spalte "schreibgeschützt" faire
z.b. pour spalte 6 et la ligne 12
PS: aussi serait je volontiers qui tabelle größer faire, so dass je alle felder gleichzeitig vois, finde malheureusement seulement ne option um cela la fenêtre trop agrandir?
lg ;) |
| | | | |
| | Thomas Freier | ensuite scheidet qui variante 1 aus. seulement sur variante 3 ist cela possible. simple qui Bedingungen abfragen, z.B.: KompilierenMarqueSéparation PS. variante 2 allez naturellement aussi, si aucun speziellen EDITs verwendet volonté. |
| | | | |
| | Energizer | bien alors hab maintenant probiert, spalten/zeilen encore drin udn so mais comment bekomme je maintenant mehrer zeilen ou bien spalten "editierfähig" ?
hab maintenant versucht dans folgende la ligne: KompilierenMarqueSéparation
IF &uwParam=1'hier nur 2.Spalte(Index =1) editierenre> derrière qui 1 encore 2, 3 etc trop écrivons (avec kommas pour qui anderen spalten) hat mais malheureusement pas geklappt
comment mach je cela maintenant? ;) |
| | | | |
| | | | - page 2 - |
| | Thomas Freier | qui Abfrage sur KompilierenMarqueSéparation ou bien KompilierenMarqueSéparation ou bien KompilierenMarqueSéparation Minibeispiel Listview-/Gridboxgröße zum la fenêtre KompilierenMarqueSéparationSet("ErrorLevel", 2)
$H Windows.ph
$H messages.ph
DECLARE LV&,a$
SubClassproc
IF SUBCLASSMESSAGE(%HWND,~WM_SIZING) or SUBCLASSMESSAGE(%HWND,~WM_SIZE)
SETWINDOWPOS LV&=10, 30 - (Width(%HWND)-20), (Height(%HWND)-60)
SET("WinProc",0)
ENDIF
endproc
CLS
~SetClassLong(%hwnd, ~GCL_STYLE, (~GetClassLong(%hwnd, ~GCL_STYLE)- ~CS_HREDRAW - ~CS_VREDRAW))
a$ = "Links;0;180;Mitte;2;100;Rechts;1;80"
LV&=Créer("GridBox", %HWND, a$, 3, 10, 30, (Width(%HWND)-20), (Height(%HWND)-60))
SUBCLASS %HWND,1
WHILE 1
WAITINPUT
ENDWHILE
FIN
|
| | | | |
| | Energizer | alors pour qui Abfrage fand je deine erste Possibilité am besten, hat soweit aussi geklappt doch comment mach je cela pour Zeilen?
et avec qui Listboxgröße komm je encore pas entier bien sûr ...
Pour CLS fängst du oui à avec setclasslong
ab dem punkt était oui dein erstes programm entier anders, là konnte je ensuite alle tabellen changement et maintenant steht oui derrière chaque spaltennamen deux payons et qui felder sommes gar pas editierbar?
oui sry je sais ist ne lourd naissance avec mir ici ;) |
| | | | |
| | Thomas Freier | cela était seulement un Beispiel avec qui internen Gridboxfunktion comment sich qui Gridbox einer Größenveränderung des Hauptfensters anpasst. Um Beispiele zum "Abiturrechner" anzupassen, müßten plus Informationen vorliegen, z.B.: Soll es un dans qui Taille unveränderbares ou bien veränderbares Hauptfenster volonté. Erforderliche Breite qui Listbox , si pas horizontal gescrollt volonté soll. Wieviele Zeilen sommes vorgesehen. Hat cela Hauptfenster une Toolbar et/ou bien Statuszeile? |
| | | | |
| | Energizer | alors cela Hauptfenster peux calme dans seiner taille veränderbar son, dass wäre mir égal et quelquefois wahrscheinlich aussi très convenable
comment breit qui listbox son soll peux je eigentlich pas dire, là je qui genaue breite sais alors wäre un anpassen à cela la fenêtre très bien ... sollte cela pas aller pourrait je naturellement aussi qui längste kombination de buchstaben, payons etc. qui pour fächer dans frage venons eingeben et dir ne pixelzahl ou bien so appeler
zeilen sommes es 15, spalten 6
si du avec toolbar dessus qui leiste meinst wohin fichier Sauver etc venons soll ensuite oui ;)
je werde bientôt chaque unterprogramme meines abirechners zusammenfügen et ensuite ici la fois nen beispiel posten, vllt peut son euch ensuite besser hinein versetzen. |
| | | | |
| | H.Brill | je sais maintenant pas, si ImportDLL déjà dans qui Version 11.2 Free disponible était. si oui, peux on qui DLL aussi sans Includedatei (Listview_funktionen.inc) nutzen. Es manquer arrêt seulement qui paire Procs, qui dans qui Include zusätzlich défini sommes. mais qui peux on oui aussi dans seinen Quellcode kopieren. cela sähe ensuite so aus : KompilierenMarqueSéparationDeclare hd%, ende%, lvdll&, Grid&, edits$
Declare datensatz#
Declare sp1$, sp2$, sp3$, sp4$, Name$, Ort$, Strasse$, Telefon$
sp1$ = "Name"
sp2$ = "Wohnort"
sp3$ = "Strasse"
sp4$ = "Telefon"
Dim datensatz#, 20
lvdll& = Importdll("Listview.dll", "")
edits$ = "1111"' alle Spalten editierbar
hd% = @Create("Window",%HWnd,"Editieren mit rechter Maustaste",10,10,800, 300)
ende% = @Create("Button", hd%, "Ende", 20, 10, 120, 20)
Grid&=CreateListview(hd%,%hinstance,0,$ffffff,-1,$31)
' Spalten definieren
IColumn(Grid&, addr(sp1$), 220, 0)
IColumn(Grid&, addr(sp2$), 150, 0)
IColumn(Grid&, addr(sp3$), 150, 0)
IColumn(Grid&, addr(sp4$), 120, 0)
' zwei Einträge ins Listview
Name$ = "Maier"
Ort$ = "Hamburg"
Strasse$ = "Hauptstr"
Telefon$ = "4711"
Long datensatz#, 0 = Addr(Name$)
Long datensatz#, 4 = Addr(Ort$)
Long datensatz#, 8 = Addr(Strasse$)
Long datensatz#, 12 = Addr(Telefon$)
SItem(Grid&, datensatz#, 4)
Name$ = "Müller"
Ort$ = "Köln"
Strasse$ = "Rheinstr."
Telefon$ = "4712"
Long datensatz#, 0 = Addr(Name$)
Long datensatz#, 4 = Addr(Ort$)
Long datensatz#, 8 = Addr(Strasse$)
Long datensatz#, 12 = Addr(Telefon$)
SItem(Grid&, datensatz#, 4)
' Listview anzeigen u. Optionen (EnableEdits) setzen
ShowListview(Grid&, 10, 40, 600, 200)
InitMessages(hd%)' nötig wegen EnableEdits
EnableEdits(Grid&, 1+8)
SelectColumnEdits(Grid&, Addr(edits$))
WhileNot @Clicked(ende%)
WaitInput
EndWhile
Dispose datensatz#
FreeDll lvdll&
/../function-references/XProfan/end/'>Fin
|
| | | Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 28.09.2013 ▲ |
| |
| | Thomas Freier |
si du avec toolbar dessus qui leiste meinst wohin fichier Sauver etc venons soll ensuite oui ;) So comment je es vois reicht un menu. qui Button einer Toolbar sommes chez umfangreichen Menüs pour schnelle Einklickaktionen de Vorteil. une Statuszeile ist approprié une gewählte Dossier/Informationen anzuzeigen, d.h., si pour einer Berechnug cet gespeichert et später wieder angezeigt volonté soll.
chez qui Fächerauswahl serait je cet pour DRAG&DROP anbieten. Beispiel KompilierenMarqueSéparation $H Windows.ph
$H messages.ph
$I Listview_Funktionen.inc
Def GetSysColor(1) !"USER32","GetSysColor"
var Font& = @CREATE("FONT","NEW TIMES ROMAN",14,0,0,0,0)
Window 930,350
WindowTitle "Abiturrechner"
SetTrueColor 1
Cls GetSysColor(15)
SetDialogFont Font&
' Menü
PopUp "Programm"
AppendMenu 109,"Ende"
PopUp "Fächer"
AppendMenu 102,"übernehmen"
AppendMenu 103,"ausblenden"
AppendMenuBar 104,"Berechnen"
AppendMenuBar 105,"Drucken"
AppendMenuBar 106,"Eingaben löschen"
' Listview
Declare lvdll&,text$,x&,y&,z&,x%,y%,z%,listview&
lvdll&=usedll("Listview.dll")
listview&=CreateListView(%hwnd,%hinstance,0,GetSysColor(24),-1,$431)
'bei +400 kann der Anwender die Spaltenbreite nicht verändern
text$="Spalte 1,Spalte 2,Spalte 3,Spalte 4,Spalte 5,Spalte 6"
SetColumnsFromMem(listview&,addr(text$),0)
SetFont listview&,Font&
Whileloop 15
SetItem listview&,str$(&loop),"","","","",""
EndWhile
SetColumnWidth(listview&,0,80)
SetColumnWidth(listview&,1,240)
SetColumnWidth(listview&,2,140)
SetColumnWidth(listview&,3,140)
SetColumnWidth(listview&,4,140)
SetColumnWidth(listview&,5,140)
ShowListView(listview&,10,10,900,270)
' damit beim Fensterverändern die Anzeige ruhiger bleibt:
~SetClassLong(%hwnd, ~GCL_STYLE, (~GetClassLong(%hwnd, ~GCL_STYLE)- ~CS_HREDRAW - ~CS_VREDRAW))
' Liste mit den Fächern
Declare Fach&, LV_F&
LV_F&=CreateListView(%hwnd,%hinstance,0,GetSysColor(24),-1,$431)
text$="Fach"
SetColumnsFromMem(LV_F&,addr(text$),0)
SetColumnWidth(LV_F&,0,80)
SetFont LV_F&,Font&
AddString(LV_F&,"Fach 1")
AddString(LV_F&,"Fach 2")
AddString(LV_F&,"Fach 3")
EnableDragDrop(listview&,1+16)
EnableDragDrop(LV_F&,1+16)
Proc FAECHEROPEN
ShowListView(listview&,10,10,(Width(%HWND)-160),270)
ShowListView(LV_F&,(Width(%HWND)-140),10,100,100)
EndProc
Proc FAECHERCLOSE
ShowListView(LV_F&,0,0,0,0)
ShowListView(listview&,10,10,(Width(%HWND)-20),270)
EndProc
' ermöglicht Aktionen beim Fensterverändern (durchbricht Waitinput)
SUBCLASS %HWND,1
InitMessages(%hwnd)
usermessages $1407, 16
While 1
waitinput
Case (%UMessage = 16) OR MenuItem(109) : BREAK
If %umessage=$1407'nach Doppellinksklick
If Getfocus(Listview&)
IF (&uwParam=2) OR (&uwParam=3) OR (&uwParam=4)
EditManual(listview&,&uwParam, &ulParam,0)'Spaltenindex, Zeilenindex (nullbasierend)
Endif
EndIf
ElseIf MenuItem(102)
FAECHEROPEN
ElseIf MenuItem(103)
FAECHERCLOSE
ElseIf MenuItem(104)
messagebox("berechnet was auch immer","Programm",32)
ElseIf MenuItem(105)
messagebox("druckt die Tabelle","Programm",32)
ElseIf MenuItem(106)'leeres Listview
DeleteAllItems(Listview&)
Whileloop 15
SetItem listview&,str$(&loop),"","","","",""
EndWhile
DeleteAllItems(LV_F&)
AddString(LV_F&,"Fach 1")
AddString(LV_F&,"Fach 2")
AddString(LV_F&,"Fach 3")
ElseIf MenuItem(15000)' Fenstergröße wurde verändet. Höhe soll bleiben
x%=%WinLeft
y%=%WinTop
z%=Width(%HWND)+8
SETWINDOWPOS %hwnd=x%,y% - z%,(270+80);0
endif
Wend
messagebox("wird beendet","Programm",32)
CloseMessages(%hwnd)
freedll lvdll&
End
SubClassproc
IF SUBCLASSMESSAGE(%HWND,~WM_SIZING) or SUBCLASSMESSAGE(%HWND,~WM_SIZE)
case ~WM_LBUTTONUP: SetMenuItem 15000' für Aktionen nach der Fenstergrößenänderung
SETWINDOWPOS Listview&=10, 10 - (Width(%HWND)-22), 270
SET("WinProc",0)
ass=s4 href='./../../function-references/XProfan/endif/'>ENDIF
endproc
Soll DROP seulement pour einer Spalte qui Hauptliste zulässig son, doit cet sur GetDragDropParas(B) gesteuert volonté. aussi, si dans qui Fächertabelle qui Faktoren le Fächern hinterlegt sommes et cet dans qui Hauptliste übernommen volonté devoir. |
| | | | |
| | Energizer | So erstmal merci pour eure Aider!
suis maintenant erstmal jusqu'à 10.10 im Urlaub, werde mich ensuite wieder chez euch annoncer
lg ;) |
| | | | |
|
répondreOptions du sujet | 12.895 Views |
Themeninformationencet Thema hat 4 participant: |