Foro | | | | - Página 1 - |
| Energizer | ¡Hola liebes Form ;), bin nun auch neu esta y a el Arbeit con XProfan 11.2 Libre (el es doch el aktuellste oder?)
Posesiones ya una wenig herumgestöbert y dank el Ayuda vom XLehrbuch de Dietmar Horn auch ya kleinere Programas geschafft.
Nun se Yo para una zwölfte Klasse una Abiturrechner programa. Dieser se así trabajo, dass uno todos Fächer inkl. Punkte eingibt y Abirechner anhand div. Vorgaben (Abiprüfungsfächer voluntad 5-fach gewertet, en Wahl uno Zusatzprüfung 4-fach etc.) el Endpunktzahl calcular.
Nun bin Yo al Überlegen, cómo hacerlo con el Eingabe al besten regeln debería. Am liebsten wäre me sí eigentlich una tabla (ähnlich Excel) en el el Anwender simplemente selber Werte eingebn kann. Desde que dafür direkt nichts gefunden habe, Yo quería todos encima una Umweg hacer, indem el Anwender en vordefinierten CheckBoxen seine Fächer auswählt y esta entonces en el Tabla übertragen voluntad. ¿Es esta posible a definieren, como viele Checkboxen gewählt voluntad dürfen?
Tal vez kann me alguien de euch en Solución dieses Problems helfen, o. me incluso una todavía bessere Solución para el Implementierung el Userdaten en mein Programa vorschlagen.
Mfg Peter |
| | | | |
| | | | | - Página 1 - |
| Energizer | @Thomas Freier: Gracias para deine schnelle Ayuda! Su erste Möglichkeit gefällt me muy bien, como voluntad Yo veces algo más rumprobieren ;)
@H.Brill: Auch deine Variante es ähnlich el por Thomas, Yo denke veces como voluntad Yo qué zusammenschustern ;)
1. Finde el Variante por Thomas aufgrund el Función para "sperren" uno Spalte muy bien. Mit welchem Befehl bekomme Yo hier nun una Vorgabetext hinein? Hätte me pensamiento como Vorgaben como "LK1" etc. reinzuschreiben ... para el no así con Wissen bedachten Personas ;)
Vielen Dank Personas, Ihr helft una Principiante como me wirklich muy! ;) |
| | | | |
| | Thomas Freier | Über el Características el Listview.dll beim Anlegen el Leerzeilen z.B.: KompilierenMarcaSeparación Ein Item con SetItemText(H,T,S,L) . Como XProfan 11.n verwendet se, puede auch el Características a Gridboxen verwendet voluntad. |
| | | | |
| | Energizer | ok also Yo habe ahora una tabla con más Spalten y zeilen, como Yo todos wünsche ;) auch con vorschrift en el feldern.
ahora sería Yo sólo gerne una einzelne zeile y una einzelne spalte "schreibgeschützt" hacer
z.b. para spalte 6 y zeile 12
PS: außerdem sería Me gusta el tabelle größer hacer, así dass Yo todos felder gleichzeitig sehe, finde desafortunadamente sólo ne option en el fenster a vergrößern?
lg ;) |
| | | | |
| | Thomas Freier | Dann scheidet el Variante 1 de. Nur encima Variante 3 es el posible. Einfach el Bedingungen abfragen, z.B.: KompilierenMarcaSeparación PS. Variante 2 va natürlich auch, si no speziellen EDITs verwendet voluntad. |
| | | | |
| | Energizer | bien also tener ahora probiert, spalten/zeilen ya otra vez drin udn así aber como bekomme Yo ahora mehrer zeilen oder spalten "editierfähig" ?
tener ahora intenta en folgende zeile: KompilierenMarcaSeparación
IF &uwParam=1'hier nur 2.Spalte(Index =1) editierenre> hinter el 1 todavía 2, 3 etc a escribir (con kommas para el otro spalten) ha aber por desgracia, no geklappt
como mach Yo el ahora? ;) |
| | | | |
| | | | - Página 2 - |
| | Thomas Freier | El Abfrage encima KompilierenMarcaSeparación oder KompilierenMarcaSeparación oder KompilierenMarcaSeparación Minibeispiel Listview-/Gridboxgröße para Ventana KompilierenMarcaSeparaciónConjunto("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&=Crear("GridBox", %HWND, a$, 3, 10, 30, (Width(%HWND)-20), (Height(%HWND)-60))
SUBCLASS %HWND,1
WHILE 1
WAITINPUT
ENDWHILE
FIN
|
| | | | |
| | Energizer | Also para el Abfrage fand Yo deine erste Möglichkeit al besten, ha soweit auch geklappt doch como mach Yo el para Zeilen?
Und con el Listboxgröße komm Todavía no bastante klar ...
Nach CLS fängst du sí a con setclasslong
de el punkt war sí dein erstes programm bastante anders, como podría Yo entonces todos tabellen ändern y ahora es sí hinter cada spaltennamen zwei zahlen y el felder son nada editierbar?
sí sry Yo weiß es ne pesado geburt con me hier ;) |
| | | | |
| | Thomas Freier | Das war sólo una Ejemplo con el internen Gridboxfunktion como el Gridbox uno Größenveränderung des Hauptfensters anpasst. Um Beispiele para "Abiturrechner" anzupassen, müßten mehr Informationen vorliegen, z.B.: Soll lo una en el Größe unveränderbares oder veränderbares Ventana principal voluntad. Erforderliche Breite el Listbox , si no horizontal gescrollt voluntad se. Wieviele Zeilen son vorgesehen. Sombrero la ventana principal una Toolbar y/oder Statuszeile? |
| | | | |
| | Energizer | Also la ventana principal kann ruhig en su größe veränderbar ser, dass wäre me egal y manchmal wahrscheinlich auch muy passend
como breit el listbox ser se kann Yo eigentlich no sagen, como Yo el genaue breite weiß also wäre una adaptar a el fenster muy bien ... debería el no ir podría Yo natürlich auch el längste kombination de buchstaben, zahlen etc. el para fächer en frage kommen eingeben y dir ne pixelzahl más o menos nennen
zeilen son lo 15, spalten 6
si du con toolbar oben el leiste media wo datei speichern etc kommen se entonces sí ;)
Yo voluntad demnächst cada unterprogramme meines abirechners zusammenfügen y luego hier veces nen beispiel puesto, vllt könnt ihr euch entonces mejor hinein versetzen. |
| | | | |
| | H.Brill | Yo weiß ahora no, si ImportDLL ya en el Versión 11.2 Libre verfügbar war. Wenn sí, puede ser el DLL auch sin Includedatei (Listview_funktionen.inc) nutzen. Lo fehlen sólo sólo el pocos Procs, el en el Incluir zusätzlich definiert son. Aber el puede ser sí auch en seinen Quellcode kopieren. Das sähe entonces así de : KompilierenMarcaSeparaciónDeclare 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/'>End
|
| | | 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 con toolbar oben el leiste media wo datei speichern etc kommen se entonces sí ;) So Yo lo sehe reicht una Menü. El Button uno Toolbar son en umfangreichen Menüs para schnelle Einklickaktionen de Vorteil. Un Statuszeile es geeignet una gewählte Expediente/Informationen anzuzeigen, d.h., si después de uno Berechnug esta gespeichert y später otra vez adecuado voluntad se.
En Fächerauswahl sería Yo esta para DRAG&DROP anbieten. Ejemplo KompilierenMarcaSeparación $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 sólo después de uno Spalte el Hauptliste zulässig ser, muß dieses encima GetDragDropParas(B) gesteuert voluntad. Auch, si en el Fächertabelle el Faktoren a Fächern hinterlegt son y esta en el Hauptliste übernommen voluntad debería. |
| | | | |
| | Energizer | So primero danke para eure Ayuda!
Bin ahora primero a 10.10 en el Fiesta, voluntad mich entonces otra vez en euch informe
lg ;) |
| | | | |
|
RespuestaTema opciones | 13.042 Views |
ThemeninformationenDieses Thema ha 4 subscriber: |