Hallo
Ich benötige eine "negative" Checkbox. Aus einer Liste (Listicongadget) sollen Daten
nicht gedruckt werden wenn die Checkbox gesetzt ist. Dafür wäre eine
Checkbox mit einem roten x drin sinnvoller als ein Haken.
Hat jemand eine Idee wie ich das angehen kann?
Hans
Negative Checkbox
-
- Beiträge: 36
- Registriert: 11.09.2004 18:18
- Wohnort: Hohenkirchen
- Kontaktdaten:
Re: Negative Checkbox
Halte ich persönlich für nicht intuitiv erfassbar. Wäre es nicht sinnvoller,hanshampel hat geschrieben:Dafür wäre eine Checkbox mit einem roten x drin sinnvoller als ein Haken.
alle Checkboxen anzuhaken und bei den nicht zu druckenden Einträgen
den Haken zu entfernen?
Grüße ... Kiffi
a²+b²=mc²
Re: Negative Checkbox
wie währ´s damit:
Das mit der Funktions-Umkehr (markiert _nicht_ drucken) könnte so aussehen:
Viel Erfolg...
Code: Alles auswählen
;+----------------------------------------------------------------------+
;| PureBasic-QuellCode "CheckBox_ColorI" mit allen ModulBody´s |
;|erstellt durch Programm "PB_Mod2Body", Vers. 11225a am 06.02.12, 11:37|
;+----------------------------------------------------------------------+
;Modul CheckBox_Color Version 1.00 vom 22.01.2009
#PB_Vers = "4.20"
;
;Funktion: versieht ListIcon mit farbigen Checkboxen (generell, für alle Zeilen)
; Ein bestehendes ListIcon mit Option #PB_ListIcon_CheckBoxes kann
; mit dieser Funktion mit farbigen Checkboxen versehen werden: jeweils
; Rahmen- und Füll-Farbe für markiert und de-markiert sind änderbar,
; ebenso die Farbe des Markierungs-Kreutzes.
; Neben hübschem Layout können durch Farben-Gleichheit auch Checkboxes
; ausgeblendet werden, ohne Kreutz markiert werden (z.Bsp. Rahmen und
; Fill = rot (mark) oder grün (de-mark) und weitere Sonderfunktionen
; realisiert werden...
;
;Aufruf: LI_CheckBox_Color(GadNr {,RGB_Mark {,RGB_Fill1 {,RGB_Rahmen1 {,RGB_Fill0 {,RGB_Rahmen0}}}}})
; GadNr = #GadgetNr des ListIcon´s
; RGB_Mark = RGB-Farbwert des kreutzes, wenn Zeile markiert. Wenn nicht
; angegeben, so wird blau benutzt
; RGB_Fill1 = RGB-Farbwert des Box-Hintergrundes, wenn Zeile markiert.
; Wenn nicht angegeben, so wird weiss benutzt
; RGB_Rahmen1= RGB-Farbwert des Box-Rahmens, wenn Zeile markiert. Wenn
; nicht angegeben, so wird schwarz benutzt
; RGB_Fill0 = RGB-Farbwert des Box-Hintergrundes, wenn Zeile de-markiert.
; Wenn nicht angegeben, so wird weiss benutzt
; RGB_Rahmen0= RGB-Farbwert des Box-Rahmens, wenn Zeile de-markiert. Wenn
; nicht angegeben, so wird schwarz benutzt
; Werden keine Farb-Parameter angegeben, so erfolgt die Darstellung der
; Checkboxes standartgemäß (schwarzer Rahmen, weisser Hintergrund, schwarzes
; Kreutz...
;
; Diese Funktion muss nach dem Aufbau des ListIcon´s mit Option "#PB_ListIcon_CheckBoxes"
; und auch nach einer Font-Zuweisung aufgerufen werden (Größe der Check=
; boxen abhängig von Font-Size).
; Mehrfach-Aufruf auf einem ListIcon möglich, ebenso Aufrufe für diverse
; ListIcon´s...
;
;#jaPBeExt exit
;========== Begin Modul "TextHoch.PBI" ==========
;Modul TextHoch Version 1.1 vom 01.10.2008
#PB_Vers = "4.20"
;
;Funktion: liefert Höhe eines Font´s [Dot´s]
;
;Aufruf: TextHoch.l = TextHoch(FontID)
Procedure TextHoch(TH_FontID) ;- Texthöhe [Dot´s] bestimmen
Protected DC, TM.TEXTMETRIC
DC = GetDC_(GetDesktopWindow_())
If DC
SelectObject_(DC,TH_FontID)
GetTextMetrics_(DC,TM)
EndIf
ProcedureReturn TM\tmHeight
EndProcedure
;========== Ende Modul "TextHoch.PBI" ==========
Procedure LI_CheckBox_Color(TabNr, RGB_Mark = #Blue, RGB_Fill1 = #White , RGB_Rahmen1 = #Black, RGB_Fill0 = #White, RGB_Rahmen0 = #Black)
Protected BoxSize = TextHoch(GetGadgetFont(TabNr))
Protected BildNr = CreateImage(#PB_Any, BoxSize, BoxSize)
Protected itemChecked = ImageID(BildNr)
Protected Rahmen = BoxSize / 8 : If Rahmen<1 : Rahmen=1 : EndIf
StartDrawing(ImageOutput(BildNr))
Box(0, 0, BoxSize, BoxSize, RGB_Rahmen1)
Box(Rahmen, Rahmen, BoxSize - Rahmen - Rahmen, BoxSize - Rahmen - Rahmen, RGB_Fill1)
LineXY(4, 4, BoxSize - 5, BoxSize - 5, RGB_Mark)
LineXY(5, 4, BoxSize - 5, BoxSize - 6, RGB_Mark)
LineXY(4, 5, BoxSize - 6, BoxSize - 5, RGB_Mark)
LineXY(4, BoxSize - 5, BoxSize - 5, 4, RGB_Mark)
LineXY(4, BoxSize - 6, BoxSize - 6, 4, RGB_Mark)
LineXY(5, BoxSize - 5, BoxSize - 5, 5, RGB_Mark)
StopDrawing()
BildNr = CreateImage(#PB_Any, BoxSize, BoxSize)
Protected itemUnchecked = ImageID(BildNr)
StartDrawing(ImageOutput(BildNr))
Box(0, 0, BoxSize, BoxSize, RGB_Rahmen0)
Box(Rahmen, Rahmen, BoxSize - Rahmen - Rahmen, BoxSize - Rahmen - Rahmen, RGB_Fill0)
StopDrawing()
Protected stateImageList = ImageList_Create_(BoxSize, BoxSize, #ILC_MASK|#ILC_COLOR32, 0, 2)
ImageList_Add_(stateImageList, itemUnchecked, 0)
ImageList_Add_(stateImageList, itemChecked, 0)
SendMessage_(GadgetID(TabNr), #LVM_SETIMAGELIST, #LVSIL_STATE, stateImageList)
EndProcedure
Code: Alles auswählen
For Zeile = 0 To CountGadgetItems(#ListIcon) - 1
If GetGadgetItemState(#ListIcon, Zeile) & #PB_ListIcon_Checked
;Zeile_drucken(Zeile) ;wenn markiert
Else
Zeile_drucken(Zeile) ;wenn _nicht_ markiert
EndIf
Next


-
- Beiträge: 36
- Registriert: 11.09.2004 18:18
- Wohnort: Hohenkirchen
- Kontaktdaten:
Re: Negative Checkbox
@Kiffi
Ja , so hab ich es im Moment gelöst ,aber bei 50 Häkchen die drei
zu finden die nicht gesetzt sind finde ich nicht so intuitiv.
Es ist auch so daß normal immer alles gedruckt wird.
Nur von Zeit zu Zeit eben mal ein oder zwei Einträge nicht.
Das hab ich vielleicht nicht genau genug dargestellt....
@ sibru
Vielen Dank für die Listings.Ich schau mir das mal an.
edit:
Das sieht aus wie Windows-only.
Ich hab jetzt schonmal einen Buttonimagegadget mit toggle gestrickt.
Nun werd ich mal sehen ob ich das noch im Listicongadet untergebracht bekomme.
edit2:
wahrscheinlich eher nicht...
Mal sehn was die GTK-Hilfe so her gibt.
hans
Ja , so hab ich es im Moment gelöst ,aber bei 50 Häkchen die drei
zu finden die nicht gesetzt sind finde ich nicht so intuitiv.
Es ist auch so daß normal immer alles gedruckt wird.
Nur von Zeit zu Zeit eben mal ein oder zwei Einträge nicht.
Das hab ich vielleicht nicht genau genug dargestellt....
@ sibru
Vielen Dank für die Listings.Ich schau mir das mal an.
edit:
Das sieht aus wie Windows-only.
Ich hab jetzt schonmal einen Buttonimagegadget mit toggle gestrickt.
Code: Alles auswählen
LoadImage(11,"Datei/irgendow/kreuz.bmp")
If OpenWindow(0,100,100,400,400,"test", #PB_Window_SystemMenu)
ButtonImageGadget(3,100,360,30,30,0,#PB_Button_Toggle)
EndIf
Repeat
event= WaitWindowEvent()
If event
If GetGadgetState(3)=1
SetGadgetAttribute(3,#PB_Button_PressedImage,ImageID(11))
Else
SetGadgetAttribute(3,#PB_Button_Image,0)
EndIf
EndIf
Until event=#PB_Event_CloseWindow
edit2:
wahrscheinlich eher nicht...
Mal sehn was die GTK-Hilfe so her gibt.
hans