Foro | | | | 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 |
| | | | |
| | Julian Schmidt | Energizer (25.08.13)
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.
Tomar dafür doch simplemente Choiceboxen/Auswahllisten. Und bau deine Tabla z.B. ähnlich como hier en [...] . Für el Beschriftung kannst du z.B. CreateText uso.
Alternativ könntest du auch el Listview.dll[...] uso. Diese Tabla sería entonces el Optik y el Feeling de Excel näher kommen. |
| | | | |
| | Energizer | So primero danke para deinen Referencia. Tut me Leid, dass Yo ahora sólo antworte hatte algo a Ohren ;) Hab ahora ya beide Varianten probiert y algo así rumgespielt. Jedoch Es el Sache con el Listview.dll para mich überzeugender, ya allein porque dass Programa sí no sólo para mich es, pero auch para unos pocos Schüler ;)
Como kriege Yo el ahora con el Tabla así hin, Yo voluntad de el Ayuda por desgracia, no schlau ^ ^
Also Yo hatte me pensamiento, dass mi Felder sí eigentlich todos por Hand eintragbar ser debería, außer el letzte Spalte en el lediglich berechnet se. Dazu Tuve me en el Listview.dll Ayuda el Función EditManual angeschaut. Jedoch es el alles para mich absolutes Neuland, podría me tal vez alguien erklären ?
lg Energizer |
| | | | |
| | Thomas Freier | Beim Einsatz el Listview.dll hay drei Möglichkeiten el Items ser editado. Mit EnableEdits(listview&,1+4) . Nach Aktivierung puede todos Items en Pfeiltasten angesteuert y editiert voluntad. Mit SelectColumnEdits(listview&,addr(texto$)) puede Spalten ausgeschlossen voluntad. KompilierenMarcaSeparaciónDeclare lvdll&,text$,x&,y&,z&,listview&
Def GetSysColor(1) !"USER32","GetSysColor"
var Font& = @CREATE("FONT","NEW TIMES ROMAN",14,0,0,0,0)
$I Listview_Funktionen.inc
lvdll&=usedll("Listview.dll")
SetTrueColor 1
Window 400,400
Cls GetSysColor(15)
listview&=CreateListView(%hwnd,%hinstance,0,GetSysColor(24),-1,$31)
'Spalten erstellen
text$="A,B,C"
SetColumnsFromMem(listview&,addr(text$),0)
SetFont listview&,Font&
SetDialogFont Font&
'Leerzeilen erstellen
Whileloop 5
SetItem listview&,"","",""
EndWhile
'Spaltenbreite
SetColumnWidth(listview&,0,100)
SetColumnWidth(listview&,1,100)
SetColumnWidth(listview&,2,100)
ShowListView(listview&,10,48,354,270)
InitMessages(%hwnd)
EnableEdits(listview&,1+4)'Item editierbar nach Doppellinksklick
UserMessages 16
While 1
waitinput
Case %UMessage = 16 : BREAK
Wend
messagebox("wird beendet","Programm",32)
setfocus(%hwnd)
DestroyWindow(%hwnd)
CloseMessages(%hwnd)
freedll lvdll&
End
Mit EditManual(listview&,&uwParam, &ulParam,0) se sólo en el gewähltem Item una Editar-Feld erstellt. KompilierenMarcaSeparaciónDeclarar lvdll&,texto$,x&,y&,z&,listview&
Def GetSysColor(1) !"USER32","GetSysColor"
var Font& = @CREATE("FONT","NEW TIMES ROMAN",14,0,0,0,0)
$I Listview_Funktionen.inc
lvdll&=usedll("Listview.dll")
SetTrueColor 1
Ventana 400,400
Cls GetSysColor(15)
listview&=CreateListView(%hwnd,%hInstance,0,GetSysColor(24),-1,$31)
text$="A,B,C"
SetColumnsFromMem(listview&,addr(texto$),0)
SetFont listview&,Font&
SetDialogFont Font&
Whileloop 5
SetItem listview&,"","",""
EndWhile
SetColumnWidth(listview&,0,100)
SetColumnWidth(listview&,1,100)
SetColumnWidth(listview&,2,100)
ShowListView(listview&,10,48,354,270)
InitMessages(%hwnd)
usermessages $1407, 16
Mientras que 1
waitinput
Case %UMessage = 16 : BREAK
'después de Doppellinksklick Item,
If %umessage=$1407
If Getfocus(Listview&)
IF &uwParam=1'hier sólo 2.Spalte(Index =1) Editar
EditManual(listview&,&uwParam, &ulParam,0)'Spaltenindex, Zeilenindex (nullbasierend)
Endif
EndIf
EndIf
Wend
messagebox("wird beendet","Programm",32)
CloseMessages(%hwnd)
freedll lvdll&
End
Dann todavía el Möglichkeit alles incluso en el Hand nehmen en z.B. auch una Editar con besonderen Características(z.B.:sólo Pagar), una Auswahlbox, una "DateEdit", usw., beim Item a platzieren, y ggf. por TAB el Items a wechseln. KompilierenMarcaSeparaciónDeclarar bereich#,lvdll&,texto$,x&,y&,z&,listview&
Def GetSysColor(1) !"USER32","GetSysColor"
Dim bereich#,256
var Font& = @CREATE("FONT","NEW TIMES ROMAN",14,0,0,0,0)
$I Listview_Funktionen.inc
lvdll&=usedll("Listview.dll")
SetTrueColor 1
Ventana 400,400
Cls GetSysColor(15)
listview&=CreateListView(%hwnd,%hInstance,0,GetSysColor(24),-1,$31)
text$="A,B,C"
SetColumnsFromMem(listview&,addr(texto$),0)
SetFont listview&,Font&
SetDialogFont Font&
Whileloop 5
SetItem listview&,"","",""
EndWhile
SetColumnWidth(listview&,0,100)
SetColumnWidth(listview&,1,100)
SetColumnWidth(listview&,2,100)
ShowListView(listview&,10,48,354,270)
InitMessages(%hwnd)
usermessages $1407
AddHotKey 7001, 13, 0'Volver
AddHotKey 7002, 9, 0'TAB Links
AddHotKey 7003, 9, 2'TAB Rechts
AddHotKey 7009, 27, 0
Mientras que 1
waitinput
Case %key=2:BREAK
caso %umessage=$1407: EDIT &uwParam, &ulParam'Spaltenindex ,'Zeilenindex (nullbasierend)
Wend
CloseMessages(%hwnd)
freedll lvdll&
End
Proc Editar
Parámetros spalte%,zeile%
Declarar Ede_del2&
INHALT
@Crear("Tooltip", %hWnd ,Ede_del2& ,"Esc=Abbruch, Valor con Enter tomar.")
Setfocus(Ede_del2&)
Mientras que 1
WaitInput
caso iskey(27):BREAK'Abbruch ESC
If MenuItem(7001) O (%MouseKey=2)'Guardar: Enter oder rechte Botón del ratón gedrückt
SetText Listview&,Línea%,Spalte%,trim$(GetText $(Ede_del2&))
BREAK
ElseIf MenuItem(7002)'TAB antes
SetText Listview&,Línea%,Spalte%,trim$(GetText $(Ede_del2&))
caso Spalte%<GetColumns(Listview&)-1: inc Spalte%
INHALT
ElseIf MenuItem(7003)'TAB rück
SetText Listview&,Línea%,Spalte%,trim$(GetText $(Ede_del2&))
caso Spalte%>0 : dec Spalte%
INHALT
EndIf
Ifnot getfocus(Ede_del2&)' Editar verliert el Focus, Eingabe verwefen
BREAK
EndIf
wend
DestroyWindow(Ede_del2&)
setfocus(%hwnd)
ENDPROC
Proc Inhalt
DestroyWindow(Ede_del2&)
Claro bereich#
Texto$=trim$(GetText $(Listview&,Línea%,Spalte%))'alter Inhalt
GetOwnControlParas(bereich#,Listview&,Spalte%,Línea%)
var opx&=Largo(bereich#,12)'X Offset
var opy&=Largo(bereich#,16)'Y Offset
var opb&=Largo(bereich#,20)'Breite
var oph&=Largo(bereich#,24)'Höhe
Ede_del2&= @Crear("Edit", Listview& ,Texto$,opx&,opy&,opb&,oph&)
SetFont Ede_del2&,Font&
Setfocus(Ede_del2&)
SendString(Ede_del2&,"+ ({FIN})")'Resalte el texto y el cursor a la Ende
ENDPROC
|
| | | | |
| | H.Brill | Hier veces una kleines Ejemplo de me. Como kannst du dir sí qué raussuchen: KompilierenMarcaSeparación $I Listview_Funktionen.inc
Declare hd%, ende%, lvdll&, Grid&, edits$
lvdll&=usedll("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
InsertColumn(Grid&, "Name", 220, 0)
InsertColumn(Grid&, "Wohnort", 150, 0)
InsertColumn(Grid&, "Straße", 150, 0)
InsertColumn(Grid&, "Telefon", 120, 0)
' zwei Einträge ins Listview
SetItem Grid&, "Maier", "Hamburg", "Hauptstr.", "4711"
SetItem Grid&, "Müller", "Köln", "Feldstr.", "4711"
' 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
FreeDll lvdll&
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. | 25.09.2013 ▲ |
| |
| | Energizer | En Línea:
$I Listview_Funktionen.inc
Bringt él en me siempre el Abbruch. Woher bekomme Yo porque esta Expediente? |
| | | | |
| | Thomas Freier | El es en el ListviewDll.zip . Je después de el cómo arbeitet, muß, si ellos en un otro Ordner abgespeichert, el Pfad a ihr anpasst voluntad, si al no en el Programmeditor einstellen kann. Das Sicherste es, ellos con el Listview.dll en el Arbeitsordener abzuspeichern. |
| | | | |
| | 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? ;) |
| | | | |
|
RespuestaTema opciones | 13.070 Views |
ThemeninformationenDieses Thema ha 4 subscriber: |