![]() |
Anzeige:
|
|
|||||||
| XProfan Alles rund um die Programmiersprache XProfan. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Stammuser
![]() Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
|
Hilfe! Versuche gerade eine Listbox im Vordergrund zu bekommen und bekomme es nicht hin.
Code:
DEF GetSysColor(1) !"USER32","GetSysColor"
cls GETSYSCOLOR (15)
var f.dlg&=%hwnd
CREATETEXT(f.DLG&,"Datum",0015,0042,0080,0022)
CREATETEXT(f.DLG&,"Name",0015,0072,0040,0022)
var f.Datum& =@CREATEEDIT(f.DLG&,"",0085,0040,0160,0022)
var f.Name& =@CREATEEDIT(f.DLG&,"",0085,0070,0160,0022)
var Schein%= @CreateCheckBox(f.DLG&,"abgegeben",90,0102,0100,0022)
Var Listname%=Control("DIALOG","",$54001100,85,92,160,220,f.dlg&,0,%hinstance,$0)
var Listname&=CreateListBox(Listname%,1,0,0,160,220)
AddString(Listname&,"Meier")
AddString(Listname&,"Freier")
AddString(Listname&,"Anton")
ShowWindow(Listname%,0)
while 1
waitinput
case %key=2:BREAK
If GetFocus(f.name&) AND (%MouseKey=0)
ShowWindow(Listname%,1)
Else
ShowWindow(Listname%,0)
EndIf
wend
end
Gruß Thomas |
|
|
|
|
|
|
#2 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 11.02.2009
Ort: Hagen, Westf.
Alter: 41
Beiträge: 171
|
@THFR
Hallo, kann es sein, dass Du die Listbox nicht auf das Fenster legst? Code:
var Listname&=CreateListBox(Listname%,1,0,0,160,220) Code:
var Listname&=CreateListBox(f.dlg&,1,0,0,160,220) Sascha
__________________
Wer ein Problem erkennt, und nichts zu seiner Beseitigung unternimmt, der ist möglicherweise ein Teil dieses Problems. Besucht mich auf meiner HP: http:\\www.saolha.bplaced.net |
|
|
|
|
|
#3 (Direktlink) |
|
Gast
Beiträge: n/a
|
Du könntest die Checkbox auch einfach verstecken
ShowWindow(schein%,0) |
|
|
|
#4 (Direktlink) |
|
Stammuser
![]() Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
|
@Sascha, hatte ich. Aber die darunterliegenden 20+ Edits "schlagen" dann, wenn die Maus zur Auswahl in der Liste ist, durch. Abhilfe schafte nur, die Edits zu deaktivieren.
Da ja eine ChoiceBox geöffnet immer Top ist, dachte ich es auch mit einem Dialog, bei entsprechendem Stil, auf dem die Listbox ist, zu realisieren. Guß Thomas Geändert von THFR (10.01.2012 um 00:29 Uhr) |
|
|
|
|
|
#5 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Kein Problem:
Def NewWindowPos(7) !"USER32","SetWindowPos" ... NewWindowPos(listbox&,-1,0,0,0,0,$13) Setzt den Toplevel für die Listbox, oder eben für jedes andere Control. An besten direkt nach dem Erstellen aufrufen.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
|
#6 (Direktlink) |
|
Stammuser
![]() Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
|
@Frank, bei mir leider noch ja. Wenn ich ein Listview über das Andere ziehe, so bleiben beide sichtbar, wie auch Handle: Create(Text), Create(Button), usw. . Nur das RTF (Notizen) wird überdeckt.
Ich hatte die Hoffnung, dass es mit einem Dialog mit entsprechendem Stil möglich ist. So ein Trackmenü schafft es ja auch. So war der Code Code:
LV_GW_FS&=CreateListView(Element3&,%hinstance,0,$FFFFFF,-1,$31)
NewWindowPos(LV_GW_FS&,-1,0,0,0,0,$13)
SetFont LV_GW_FS&,L_font&
EnableEdits(LV_GW_FS&,5)
~SetWindowLong(LV_GW_FS&,~GWL_EXSTYLE,0)
SetStyle LV_GW_FS&,GetStyle(LV_GW_FS&) | ~ws_thickFrame
text$=old_file$ + "\\Bootsplatz\\" + BP_Wahl$[b.obj%]+"\\"+BP_Wahl$[b.obj%] + "-FS.csv"
bytes&=@FileSize(text$)
If bytes&>0
Dim bereich#,bytes&
ReadFileQuick(addr(text$),bereich#,0,bytes&)
x&=SetColumnsFromMem(LV_GW_FS&,bereich#,addr(y&))
CsvToListview(LV_GW_FS&,(bereich#+y&),(bytes&-y&),x&)
Dispose bereich#
SetColumnWidth(LV_GW_FS&,0,80)
SetColumnWidth(LV_GW_FS&,1,50)
SetColumnWidth(LV_GW_FS&,2,80)
SetColumnWidth(LV_GW_FS&,3,80)
SetColumnWidth(LV_GW_FS&,4,80)
SetColumnWidth(LV_GW_FS&,5,80)
EndIf
ShowListView(LV_GW_FS&,600,380,%maxx-630,100)
var BS_b00& = CreateText(ELEMENT3&,"Fangstatistik",600,354,170,22)
SetFont BS_b00&,LF_font&
var NOT_b0& = CreateText(ELEMENT3&,"Notizen",600,504,122,22)
SetFont NOT_b0&,LF_font&
Bmp1& = CREATE("HPIC", Verein_dll&, "#5")
var NOT_b3& =Create("PicButton",ELEMENT3&,Bmp1&,848,500,22,22)
LV_GW_RTF& = Create("RichEdit",ELEMENT3&,"",600,530,600,-100)
Rtf("LoadRTF",LV_GW_RTF&,old_file$ + "\\Bootsplatz\\" + BP_Wahl$[b.obj%]+"\\"+BP_Wahl$[b.obj%] + ".rtf")
~SetWindowLong(LV_GW_RTF&,~GWL_EXSTYLE,0)
SetStyle LV_GW_RTF&,GetStyle(LV_GW_RTF&) | ~ws_thickFrame
Gruß Thomas
Geändert von THFR (10.01.2012 um 03:32 Uhr) |
|
|
|
|
|
#7 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Der Code ist leider nicht testbar.
Vielleicht anstelle eines Dialogs ein Static als Parent verwenden? Insgesamt ist es besser, alle Controls auf ein und demselben Parent zu setzen.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#8 (Direktlink) |
|
MoRoGeP-Träger 2011
![]() Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.878
|
Hab ich dich richtig verstanden ? Die Listbox soll auf Mausklick hin verschwinden und wieder erscheinen ?
So würde ich es machen. (Sorry, hab deinen Code aus dem 1. Thread etwas geändert ) Code:
DEF GetSysColor(1) !"USER32","GetSysColor"
cls GETSYSCOLOR (15)
WINDOW (%MaxX/2-320),(%MaxY/2-240) - 640,480
DECLARE txt%,schein%
DECLARE datum&,name&,_dlg&,_box&
DECLARE modus$
txt%=CREATE("TEXT",%hwnd,"Datum",15,42,80,22)
txt%=CREATE("TEXT",%hwnd,"Name",15,72,40,22)
datum& =CREATE("EDIT",%hwnd,"",85,40,160,22)
name& =CREATE("EDIT",%hwnd,"",85,70,160,22)
schein%= CREATE("CheckBox",%hwnd,"abgegeben",90,102,100,22)
_dlg&=Control("DIALOG","",$54001100,85,150,160,220,%hwnd,0,%hinstance,$0)
_box&=CREATE("LISTBOX",_dlg&,"",0,0,160,220)
AddString(_box&,"Meier")
AddString(_box&,"Freier")
AddString(_box&,"Anton")
ShowWindow(_dlg&,1)
modus$="1"
SETFOCUS(datum&)
WHILE 1
WAITINPUT
case %key=2:BREAK
If CLICKED(name&)
If modus$="1"
ShowWindow(_dlg&,0)
modus$="0"
SETFOCUS(datum&)
ELSEIF modus$="0"
ShowWindow(_dlg&,1)
modus$="1"
SETFOCUS(datum&)
ENDIF
ENDIF
ENDWHILE
end
__________________
Gruss, horst Computer werden kleiner und kleiner, bald verschwinden sie völlig. (Ephraim Kishon 1924-2005) http://www.web-treffpunkt.de |
|
|
|
|
|
#9 (Direktlink) |
|
Stammuser
![]() Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
|
Nein Horst, wenn ein Listview(hier wegen der Kürze Gridbox) in der Größe, z.B. zum Bearbeiten, verändert wurde und bearbeitet wird (den Focus hat), soll es die anderen überdecken. Mini Beispiel
Code:
$H Windows.ph
$H messages.ph
$H RichEdit.ph
$H commctrl.ph
$H Structs.ph
Def NewWindowPos(7) !"USER32","SetWindowPos"
DEF Redraw(1) ~RedrawWindow(&(1),0,0,~RDW_FRAME | ~RDW_INVALIDATE | ~RDW_ALLCHILDREN | ~RDW_ERASE)
cls 15
Var E31&=Control("DIALOG","",$50400001,100, 40, 240, 100,%hwnd,0,%hinstance,$0)
var LV1&=Create("GridBox", E31&, "Telefon;0;100;Email;0;130;", 1, 0, 0, 240, 100)
NewWindowPos(E31&,-1,0,0,0,0,$13)
~SetWindowLong(E31&,~GWL_EXSTYLE,0)
SetStyle E31&,GetStyle(E31&) | ~ws_thickFrame
var LV2&=Create("GridBox", %hwnd, "Name;0;170;Vorname;0;160;", 1, 100, 160, 340, 100)
NewWindowPos(LV2&,-1,0,0,0,0,$13)
~SetWindowLong(LV2&,~GWL_EXSTYLE,0)
SetStyle LV2&,GetStyle(LV2&) | ~ws_thickFrame
var LV3&=Create("GridBox", %hwnd, "Ort;0;100;Strasse;0;130;", 1, 100, 300, 240, 100)
NewWindowPos(LV3&,-1,0,0,0,0,$13)
~SetWindowLong(LV3&,~GWL_EXSTYLE,0)
SetStyle LV3&,GetStyle(LV3&) | ~ws_thickFrame
AddString(LV1&,"328963|k.m@ohne.de")
AddString(LV2&,"Klaus|Mustermann")
AddString(LV3&,"Muster|Wasserweg 9a")
while 1
case %key=2:BREAK
waitinput
'Redraw(%hwnd)
wend
Wenn keiner eine Idee hat, werde ich wohl zur ReBar greifen. Gruß Thomas |
|
|
|
|
|
#10 (Direktlink) |
|
MoRoGeP-Träger 2011
![]() Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.878
|
Hab mit Showwindow(X%,0) probiert. Wenn du alle Gridboxen auf das Hauptfenster legst, geht das. Ist aber 'ne Krücke.
Da gibt es elegantere Lösungen mit TAB... usw... Hier mein "letzter Versuch" (Alle Gridboxen auf %hwnd) Code:
IF GETFOCUS(LV1&)
Showwindow(LV1&,1)
Showwindow(LV2&,0)
Showwindow(LV3&,0)
ELSEIF GETFOCUS(LV2&)
Showwindow(LV1&,0)
Showwindow(LV2&,1)
Showwindow(LV3&,0)
ELSEIF GETFOCUS(LV3&)
Showwindow(LV1&,0)
Showwindow(LV2&,0)
Showwindow(LV3&,1)
ELSEIF GETFOCUS(%hwnd) 'irgendwohin klicken außerhalb der aktiven Gridbox
Showwindow(LV1&,1)
Showwindow(LV2&,1)
Showwindow(LV3&,1)
ENDIF
__________________
Gruss, horst Computer werden kleiner und kleiner, bald verschwinden sie völlig. (Ephraim Kishon 1924-2005) http://www.web-treffpunkt.de |
|
|
|
|
|
|
#11 (Direktlink) |
|
Stammuser
![]() Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
|
@Horst, deinen Vorschlag hatte ich auch schon. Ist sicher der einfachste und sicherste Weg.
Habe selbst noch etwas weiter gesucht, Box über allen andren, wenn eine Zeile markiert wird, ist noch nicht optimal. Code:
$H Windows.ph
$H messages.ph
$H RichEdit.ph
$H commctrl.ph
$H Structs.ph
Def NewWindowPos(7) !"USER32","SetWindowPos"
DEF Redraw(1) ~RedrawWindow(&(1),0,0,~RDW_FRAME | ~RDW_INVALIDATE | ~RDW_ALLCHILDREN | ~RDW_ERASE)
cls 15
var LV1&=Create("GridBox", %hwnd, "Telefon;0;100;Email;0;130;", 1, 100, 10, 240, 100)
' NewWindowPos(LV1&,-1,0,0,0,0,$13)
~SetWindowLong(LV1&,~GWL_EXSTYLE,0)
SetStyle LV1&,GetStyle(LV1&) | ~ws_thickFrame
var LV2&=Create("GridBox", %hwnd, "Name;0;170;Vorname;0;160;", 1, 100, 160, 340, 100)
~SetWindowLong(LV2&,~GWL_EXSTYLE,0)
SetStyle LV2&,GetStyle(LV2&) | ~ws_thickFrame
var LV3&=Create("GridBox", %hwnd, "Ort;0;100;Strasse;0;130;", 1, 100, 300, 240, 100)
NewWindowPos(LV3&,-1,0,0,0,0,$13)
~SetWindowLong(LV3&,~GWL_EXSTYLE,0)
SetStyle LV3&,GetStyle(LV3&) | ~ws_thickFrame
AddString(LV1&,"328963|k.m@ohne.de")
whileloop 15
AddString(LV2&,str$(&loop)+". Klaus|Mustermann")
wend
AddString(LV3&,"Muster|Wasserweg 9a")
while 1
case %key=2:BREAK
waitinput
if getfocus(LV3&)
SetStyle LV2&,GetStyle(LV2&) | ~SWP_NOACTIVATE
SetStyle LV1&,GetStyle(LV1&) | ~SWP_NOACTIVATE
Redraw(LV3&)
Elseif getfocus(LV2&)
SetStyle LV1&,GetStyle(LV1&) | ~SWP_NOACTIVATE
SetStyle LV3&,GetStyle(LV3&) | ~SWP_NOACTIVATE
Redraw(LV2&)
Elseif getfocus(LV1&)
SetStyle LV2&,GetStyle(LV2&) | ~SWP_NOACTIVATE
SetStyle LV3&,GetStyle(LV3&) | ~SWP_NOACTIVATE
Redraw(LV1&)
endif
wend
Gruß Thomas |
|
|
|
|
|
#12 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Was genau hast du jetzt eigentlich vor?
Gridboxen einen Style zu geben, der so nicht vorgesehen ist, ist vielleicht keine so gute Idee. Ansonsten hätte MS auch ein Set-Gegenstück geschaffen zu GetTopWindow().
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#13 (Direktlink) |
|
Stammuser
![]() Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
|
@Frank, dass man vier Listviews beliebig vergrößern kann und bei Überschneidung die Gewählte sicht- und bearbeitbar wird.
Ich werde es noch mit der oFrame.dll testen, da ich sie in dem Programm ohne hin eingesetzt habe. Gruß Thomas |
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Handle für Speicherbitmap | horsthorn | XProfan | 4 | 08.12.2011 11:28 |
| [Windows XP-32 bit] lsass.exe - ungültiges Handle | marci | Viren-Forum | 5 | 30.04.2011 13:26 |
| Handle | Tester | C/C++, Visual C++, Visual C++.NET | 2 | 09.03.2010 20:29 |
| Was ist ein Handle? | AHT | Spezielles | 58 | 11.04.2009 10:29 |
| DFÜ Einwahl Handle Fehler 6 | Drawfit | Netzwerke | 2 | 03.02.2004 19:51 |