Foro | | | | Energizer | So Personas, melde mich seit langem auch veces otra vez!
Posesiones ahora veces alles algo para mich adaptado. Dies es ahora primero el Ver código fuente para el Tabla, speichern/invitar sowie el Berechnung son en otro Schnipseln ;) 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)
text$="Kurs,HJ1,HJ2,HJ3,HJ4,Endpunktzahl"
SetColumnsFromMem(listview&,addr(text$),0)
SetFont listview&,Font&
SetDialogFont Font&
Whileloop 1
SetItem listview&,"Deutsch LK"
SetItem listview&,"Mathematik LK"
SetItem listview&,"Englisch LK"
SetItem listview&,"LK 4"
SetItem listview&,"LK 5"
SetItem listview&,"GK1"
SetItem listview&,"GK2"
SetItem listview&,"GK3"
SetItem listview&,"GK4"
SetItem listview&,"GK5"
SetItem listview&,"GK6"
SetItem listview&,"Optional:"
SetItem listview&,"ZusatzGK1"
SetItem listview&,"ZusatzGK2"
SetItem listview&,"ZusatzGK3"
EndWhile
SetColumnWidth(listview&,0,100)
SetColumnWidth(listview&,1,50)
SetColumnWidth(listview&,2,50)
SetColumnWidth(listview&,3,50)
SetColumnWidth(listview&,4,50)
SetColumnWidth(listview&,5,85)
ShowListView(listview&,10,48,354,270)
InitMessages(%hwnd)
usermessages $1407, 16
While 1
waitinput
Case %UMessage = 16 : BREAK
'nach Doppellinksklick Item,
If %umessage=$1407
If Getfocus(Listview&)
IF (&uwParam=1) OR (&uwParam=2) OR (&uwParam=3) OR (&uwParam=4)'hier nur 2.Spalte(Index =1) editieren
EditManual(listview&,&uwParam, &ulParam,0)'Spaltenindex, Zeilenindex (nullbasierend)
Endif
EndIf
EndIf
Wend
messagebox("wird beendet","Programm",32)
CloseMessages(%hwnd)
freedll lvdll lass=s4 href='./../../funktionsreferenzen/XProfan/end/'>End
Jetzt Yo mehrere Fragen/Problemas.
1. Yo sería gerne el Línea "optional" no editierfähig hacer, va el ? Sie muss en efecto no necesariamente hay en el Tabla ser, se sólo sólo si alguien Zusatzkurse gewählt ha posible ser, esta einzutragen!
2. Soll el Tabla después de abierto des Programms möglichst vollständig en el Ventana a sehen ser, así dass Yo no scrollen muss.
2.1 ¿Es posible, dass el Tabla en Vergrößern des Programmfensters auch vergrößert?
3. Nachdem en el Spalten 2-5 el Noten eingetragen fueron, brauche Yo una opción, en 42 FELDER con Noten auszuwählen, welche el Abiturnoten ergeben debería.
3.1 Besonders nett/hilfreich wäre lo, si gewisse Felder ya vordefiniert y no änderbar wären (z.B. Z.1-3, sowie Z. 6) Dies sería el verpflichtend einzubringenden Noten kennzeichnen, si alguien esta no sabe.
Tal vez habt Ihr algunos Ideen y Sugerencias para mich ;)
LG y una schönen 1. Advent todavía, Peter |
| | | | |
| | Julian Schmidt | Energizer (01.12.13)
1. Yo sería gerne el Línea "optional" no editierfähig hacer, va el ? Sie muss en efecto no necesariamente hay en el Tabla ser, se sólo sólo si alguien Zusatzkurse gewählt ha posible ser, esta einzutragen!
Natürlich va el, du musst simplemente sólo verhindern el él para dieser Línea el Edierfunktion aufruft, etwa así... KompilierenMarcaSeparación Energizer (01.12.13)
2. Soll el Tabla después de abierto des Programms möglichst vollständig en el Ventana a sehen ser, así dass Yo no scrollen muss. 2.1 ¿Es posible, dass el Tabla en Vergrößern des Programmfensters auch vergrößert?
Das Skalieren des Listviews con el Fenstergröße es al einfachsten encima %WM_Paint lösbar. Hier veces una Ejemplo con un mehrzeiligen Editierfeld. KompilierenMarcaSeparaciónCLS
Set("AutoPaint", 0)
Var edit&=Create("MultiEdit",%hwnd,"Ich bin skallierbar",10,10,width(%hwnd)-20,height(%hwnd)-20)
While 1
WaitInput
If %wmPaint
SetWindowPos edit&=10,10 - width(%hwnd)-20,height(%hwnd)-20
EndIf
Energizer (01.12.13)
3. Nachdem en el Spalten 2-5 el Noten eingetragen fueron, brauche Yo una opción, en 42 FELDER con Noten auszuwählen, welche el Abiturnoten ergeben debería.
Schau dir hier a veces el whileloop Bucle a...
Energizer (01.12.13)
3.1 Besonders nett/hilfreich wäre lo, si gewisse Felder ya vordefiniert y no änderbar wären (z.B. Z.1-3, sowie Z. 6) Dies sería el verpflichtend einzubringenden Noten kennzeichnen, si alguien esta no sabe.
Was willst du genau?
Saludo
Julian |
| | | | |
| | Energizer | Bzgl. 1.)
Yo habe mehrer Versionen ausprobiert, veces es gar nichts passiert, teils war zwar el Línea optional no editierbar, dafür aber el komplette 1. Spalte y teils war sólo el erste Spalte en Línea 11 (el en el "optional" es) gesperrt, el spalten detrás de él aber trotzdem editierbar.
Nochmal para Verständnis: Yo habe esta Tabla. Dort se el komplette erste Spalte gesperrt ser! Zusätzlich se ebenfalls el GESAMTE Línea 11 (o. 12), Así que el con el Texto "Optional" gesperrt voluntad. Ist el realisierbar y si sí, a welcher Punto muss Yo como el Línea einfügen?
2.
Tut me Leid aber Yo habe hier überhaupt ni idea, como Yo el Verwenden se. Yo habe intenta versch. Werte oder Schleifen a tomar, hatte Fehlermeldungen y "nicht-mehr-beendbare" Programas, aber desafortunadamente no skalierte Tabla Posesiones lo nichtmal hinbekommen el Tabla allgemein Größer a hacer, dass wenigstens si yo en el Code una größeres "Window" einstelle, el Tabla hay komplett adaptado wäre
3. Ach sí, whileloop, bien como hätte Yo selber en él kommen puede. Sry como stand Yo simplemente el Schlauch ... manchmal son lo el simplen Dinge ;)
3.1 Folgendermaßen: En uno Minimalbelegung aller Fächer hätte uno al Ende des Jahres 44 Semesternoten, de denen el Endpunktzahl berechnen sería (11 Kurse * 4 Semester) (natürlich sin Abiklausuren).
Davon puede aber sólo 42 Noten en el Endpunktestand en el Abiturzeugnis eingebracht voluntad, dass heißt 2 Noten fallen weg (logischerweise wählt uno el schlechtesten). Belegt uno ahora todavía Zusatzkurse, ha uno todavía mehr Noten disponible, d.h. uno kann al Ende auch mehr schlechte Noten rausfallen dejar.
Jedoch hay algunos Fächer, como z.B. el Abiturprüfungsfächer, el zwingend en el Endzensur eingebracht voluntad necesario. Vermutlich sabe sin embargo no cada esta verpflichtend einzubringenden Kurse. Dazu wäre lo nun muy hilfreich, si bajo el 42 auszuwählenden Semesternoten, ya el markiert wären, el zwingend eingebracht voluntad necesario y esta no verändert (ausgeklickt) voluntad puede.
War dies verständlich, sonst mach Yo rápidamente nen Bild oder iwas en lo a verdeutlichen? |
| | | | |
| | Thomas Freier | Tal vez hilft dieses Ejemplo más: KompilierenMarcaSeparación $H windows.ph
$I Listview_Funktionen.inc
var lvdll&=usedll("Listview.dll")
Cls
~SetClassLong(%hwnd, ~GCL_STYLE, (~GetClassLong(%hwnd, ~GCL_STYLE)- ~CS_HREDRAW - ~CS_VREDRAW))
Var bb& = Create("Button",%hwnd,"Ende",0,0,0,0)
var listview&=CreateListView(%hwnd,%hinstance,0,$FFFFFF,-1,$31)
InsertColumn listview&,"1",80,0
InsertColumn listview&,"2",80,0
InsertColumn listview&,"3",80,0
InsertColumn listview&,"4",80,0
InsertColumn listview&,"5",80,0
InsertColumn listview&,"6",80,0
Whileloop 10
AddString(listview&,"Test|||||")
wend
var dlg&=%hwnd
Declare _dlgw&,_dlgh&, _odlgw&, _odlgh&, Ende%,bereich#,S&,Z&,y&
dim bereich#,320
_odlgw&=width(dlg&)
_odlgh&=height(dlg&)
setwindowpos bb&=(_odlgw&-70),5 - 60,20;0
ShowListView(listview&,10,30,(_odlgw&-20),(_odlgh&-40))
InitMessages(%hwnd)
WhileNot Ende%
WaitInput
case %key=4:Grid_do
case Getfocus(bb&): Ende%=1
y&=GetControlParas(bereich#)
S&=Long(bereich#,4)'Spalte
Z&=Long(bereich#,8)'Zeile
If y&=2'rechter Mausknopf wurde gedrück
Ifnot S&=1
IfNot Z&=3
EditManual(Listview&,S&,Z&,0)
EndIf
EndIf
EndIf
Wend
proc Grid_do
_dlgw&=width(dlg&)
_dlgh&=height(dlg&)
if ( ( _odlgw&<>_dlgw& ) or ( _odlgh&<>_dlgh& ) )
_odlgw&=_dlgw&
_odlgh&=_dlgh&
setwindowpos bb&=(_odlgw&-70),5 - 60,20;0
setwindowpos listview&=10,30 - (_odlgw&-20),(_odlgh&-40);0
endif
endproc
dispose bereich#
CloseMessages(%hwnd)
='./../../funktionsreferenzen/XProfan/freedll/'>freedll lvdll&
|
| | | | |
| | Thomas Freier |
2. Soll el Tabla después de abierto des Programms möglichst vollständig en el Ventana a sehen ser, así dass Yo no scrollen muss.
Como hilft sólo Berechnen de Höhe y max. Breite des Zeilen- o. Headertextes : [...] entonces el Font (Höhe,ggf. eng) y el erforderliche Spaltenbreite festlegen y testen. |
| | | | |
| | Energizer | vielen Dank Thomas!
Usted hast me muy geholfen, habe ahora ya fast alles en me erweitert, todavía unos pocos Zeilen aber el kann Yo auch todavía später hacer!
Damit wären Problema 1 y 2 gelöst !
Jetzt debería Yo sólo todavía qué para Punkt 3 überlegen . |
| | | | |
| | Thomas Freier | Ab XProfan 11 Aprovecho el Gridboxfunktionen y si nötig de el Listview.dll. Zeilen vorgeben z.B.: KompilierenMarcaSeparaciónAddString(listview&,"Deutsch LK|fest|fest|fest|fest")
AddString(listview&,"Mathematik LK|fest|fest|fest|fest")
AddString(listview&,"Englisch LK|fest|fest|fest|fest")
AddString(listview&,"LK 4")
AddString(listview&,"LK 5")
AddString(listview&,"GK1|fest|fest|fest|fest")
AddString(listview&,"GK2")
AddString(listview&,"GK3")
AddString(listview&,"GK4")
AddString( listview&,"GK5")
AddString(listview&,"GK6")
AddString(listview&,"Optional:")
AddString(listview&,"ZusatzGK1")
AddString(listview&,"ZusatzGK2")
AddString(listview&,"ZusatzGK3")
Como vermutlich Zensuren, d.h., sólo Pagar y Trenner eingegeben voluntad debería, müssten el Editar-Felder incluso producido voluntad. Siehe Ejemplo: Eigene_Eingaben. Weiterschalten por TAB es tal vez no necesariamente erforderlich. Ejemplo para Editar con Pagar: [...] oder KompilierenMarcaSeparaciónDef GetSysColor(1) !"USER32","GetSysColor"
cls GetSysColor(15)
UseFont Arial,15,0,0,0,0
SETDIALOGFONT 1
CreateText(%hwnd,"num. Eingabe max.: nn.nn",30,120,200,22)
var Ed&=Crear("Edit",%hwnd,"",30,165,80,20)
@sendmessage(Ed&,$00C5,3,0)'y en 3 Stellen (n.n) begrenzt
SetFocus(Ed&)
Mientras que 1
WaitInput
caso %key=2 : BREAK
caso GETFOCUS(Ed&): NUMWERT Ed&,1'Handle, Signo vorm Komma
EndWhile
End
Proc NUMWERT' AUSWERTUNG en Signo y Stellen
Parámetros ED.N&,ED.N%
var a$="abcdefghijklmnopqrstuvwxyz"
a$=a$+Upper$("abcdefghijklmnopqrstuvwxyz")
a$=a$+"!§$%&/()=?''*':;,-_²³{[]}\^°<>|++-"
var c$=""
WhileLoop len(a$)
c$ = MID$(a$,&Loop,1)' c$= el nte Stringteil
Settext ED.N&,@Translate$(gettext$(ED.N&),c$,"")' unzulässige löschen
Settext ED.N&,@Translate$(gettext$(ED.N&),"..",".")' doppelte löschen
EndWhile
a$=trim$(gettext$(ED.N&))
WhileLoop ED.N%+1
@Match$("~.", a$)
If (%MatchPos>0) AND (%MatchPos<ED.N%+1)
a$=" "+a$' Leerzeichen oder führende Null
EndIf
EndWhile
If len(a$)=ED.N%
caso @IsKey(8):a$=left$(a$,len(a$))
casenot @IsKey(8):a$=left$(a$,ED.N%)+"."
EndIf
SetText ED.N&,a$
sendmessage(ED.N&,$00B1,len(gettext$(ED.N&)),-1)'Cursor en Ende
ENDPROC
|
| | | | |
|
RespuestaThemeninformationenDieses Thema ha 3 subscriber: |