Seite 2 von 3

Re: Brauche hilfe bei GadgetColumn und zu dessen width

Verfasst: 29.01.2005 02:54
von Szandor
Donald hat geschrieben:
Szandor hat geschrieben:Hallo liebe PBler!

Ich bin ein alter PB User der nach laanger Zeit endlich wieder zurück gefunden hat.
Nun habe ich gestern einfach mal angefangen eine kleine CD/DVD Datenbank zu basteln mit der man ganz einfach ohne viel haben zu müssen seine CDs katalogiseren kann... Die meisten Tools sind einfach zu unpraktisch... Datenbanken zu umständlich um einfach auf die schnelle was einzu tragen...
Hi, genau aus diesen Gründen habe ich mir ebenfalls ein eigenes
Verwaltungsprogramm für CD - DVD - VIDEO programmiert.
Allerdings damals noch in GFA.
Na mal sehen ob ich es irgendwann mal in PB umsetzte.
Kannst ja gerne meine Version ausprobieren. Im Grunde ist sie schon up, nur leider ist es im PureArea noch nicht freigeschalten.

Die Suche funktioniert ja jetzt auch. Wenn es morgen noch immer nicht freigeschalten ist, poste ich den link direkt hier her!
ChaOsKid hat geschrieben:

Code: Alles auswählen

SendMessage_(GadgetID(#List), #LVM_ENSUREVISIBLE, search, 0)
mfG
Tobi
DANKE!!! Das funktioniert wunderbar :)
Aber woher nimmst du immer die Konstanten Namen? Gibt es da vielleicht eine Liste?
Würde nämlich auch gerne erfahren wie ich es hinbekomme das die colums auf die LISTbreite angeglichen wird, dazu müsste man aber ersteinmal wissen wann man eben den balken verschiebt, bzw wenn man loslässt, damit es sich dann wieder korrekt anpasst...
Aber an das Problem werde ich mich morgen ran tasten, jetzt wird einmal geschlafen... :mrgreen:

Re: Brauche hilfe bei GadgetColumn und zu dessen width

Verfasst: 29.01.2005 03:42
von freedimension
Szandor hat geschrieben: Aber woher nimmst du immer die Konstanten Namen? Gibt es da vielleicht eine Liste?
Es gibt sogar viel mehr als nur eine schnöde Liste ;)

Einfach hier schauen: http://robsite.de/php/pureboard/viewtopic.php?t=16

Re: Brauche hilfe bei GadgetColumn und zu dessen width

Verfasst: 29.01.2005 04:04
von Donald
Szandor hat geschrieben:Kannst ja gerne meine Version ausprobieren. Im Grunde ist sie schon up, nur leider ist es im PureArea noch nicht freigeschalten.
Mach ich doch gerne, mal schauen was du da "gezaubert" hast.

Re: Brauche hilfe bei GadgetColumn und zu dessen width

Verfasst: 29.01.2005 14:44
von Szandor
freedimension hat geschrieben:
Szandor hat geschrieben: Aber woher nimmst du immer die Konstanten Namen? Gibt es da vielleicht eine Liste?
Es gibt sogar viel mehr als nur eine schnöde Liste ;)

Einfach hier schauen: http://robsite.de/php/pureboard/viewtopic.php?t=16
:o :allright: - Das ist alles was mir dazu einfällt! Kannte zwar schon die win32.hlp. Aber diese Zusammenfassung hier ist ja ABSOULT GENIAL :)... Danke für den Link :D!

Um sich dem "colums auf listbreite ausdehnen" -Feature zu nähern *g*..
Das hier scheint genau das zu sein was ich brauche, nur wie komme ich an dieses WM_NOTIFY ran? Hier der Link -> ...wurde entfernt weil das leider nicht der richtige Link ist.
Vermutlich ist das irgendwie mit dem Callback möglich.. *sucht gleich mal im forum danach..* (da gibt es doch bestimmt schon etwas dazu :D)
Gut, ich habe zwar was gefunden, aber so ganz klar komme ich nicht damit :(... Also das mit den WindowsCallback ist mir nicht ganz klar.... *sucht gleich weiter im Forum nach callback....* hmmm :shock:... mal sehen ob ich das hinbekomme...
Ich werde es jetzt einmal probieren, kann ja nicht so schwer sein!

EDIT:
Die ersten Versuche gingen nicht schlecht, aber ich komme einfach nicht dahinter wie ich feststellen kann das es resized wird.... Vielleicht kannst du mir ja etwas dabei helfen. Ich dachte zwar oben das der Link (der von mir oben) genau das richtige wäre für das was ich möchte, aber das ist leider nur um zu überprüfen ob der header angeklickt wurde (und nicht ob die spalte verschoben wird bzw. wurde)...
Ausserdem komme ich mit dem WindowsCallback nicht so ganz zurecht. Ich weiss nicht genau was mit lParam und wParam gemeint ist, bzw was da übergeben wird. Message habe ich schon verstanden, nur eben den rest nicht *g*
Donald hat geschrieben:
Szandor hat geschrieben:Kannst ja gerne meine Version ausprobieren. Im Grunde ist sie schon up, nur leider ist es im PureArea noch nicht freigeschalten.
Mach ich doch gerne, mal schauen was du da "gezaubert" hast.


EDIT:
Da jetzt das ganze auf der Seite selbst auch freigeschaltet ist, HIER DER RICHTIGE LINK!
----> http://www.purearea.net/pb/showcase/sho ... p=0&sort=1 <----

Feedback ist erwünscht. Einige Dinge sind aber sowieso noch nicht implementiert, kommt aber auch noch dazu:
Exportieren in HTML,
Drucken,
Spaltengrösse an Listview anpassen,
editor etwas erweitern (bei Add >> und << Add das er auch gleich mitzählt bei der Nr...),
Sparten einstellbar in den Options um es dann bei edit nur mehr auswählen zu müssen (derzeit muss man das noch tippen).
WEITERSUCHEN Button macht derzeit noch nichts (nur Suchen geht bis jetzt...)

Zur Zeit ist das ganze Programm mehr in Deutsch als Englisch, das liegt aber nur daran das mein Englisch nicht perfekt ist, und ich keine unten drunter übersetzung erstellen will :D.
Wenn jemand in Englisch gut ist, wäre ich Dankbar wenn ihr mir eine gute übersetzung liefern könntet. Der Webupdater ist schon in Englisch, da er noch aus einer alten Entwicklung von mir vorlag (und schon ins Englische übersetzt wurde :roll:)

Verfasst: 29.01.2005 22:55
von ChaOsKid
Microsoft Platform SDK ist meine quelle für die Konstanten Namen :)

so würde ich meine spalten auf listbreite ausdehnen:

Code: Alles auswählen

Global Quit.l, Spaltenanzahl.l
#LV_GADGET = 1
;/
Procedure OpenMyWindow()
  If OpenWindow(0, 0, 0, 600, 300, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered , "listviewcolumnresize")
    If CreateGadgetList(WindowID())
      ListIconGadget(#LV_GADGET, 2, 2, 596, 296, "", 250, #PB_ListIcon_FullRowSelect | #PB_ListIcon_GridLines|#PB_ListIcon_AlwaysShowSelection)
      Spaltenanzahl = 4 ; 
      For s = 1 To Spaltenanzahl
        AddGadgetColumn(#LV_GADGET, s, "", 80)
      Next
    EndIf
    ProcedureReturn 1
  EndIf
  ProcedureReturn 0
EndProcedure
;/
Procedure.l isVerticalScrollBarVisible(hwnd.l)
  style.l = GetWindowLong_(hwnd, #GWL_STYLE)
  If style & #WS_VSCROLL <> 0
    ProcedureReturn 1
  EndIf
  ProcedureReturn 0 
EndProcedure
;/
Procedure.l LVM_SetColumnWidth(GadgetID.l, Spalte.l, Breite.l)
  ProcedureReturn SendMessage_(GadgetID(GadgetID), #LVM_SETCOLUMNWIDTH, Spalte, Breite)
EndProcedure
;/
Procedure.l LVM_GetColumnWidth(GadgetID.l, Spalte.l)
  ProcedureReturn SendMessage_(GadgetID(GadgetID), #LVM_GETCOLUMNWIDTH, Spalte, 0)
EndProcedure
;/
Procedure ResizeListViewColums()
  For s = 1 To Spaltenanzahl
    Breite + LVM_GetColumnWidth(#LV_GADGET, s)
  Next
  Breite = GadgetWidth(#LV_GADGET) - Breite - 5
  If isVerticalScrollBarVisible(GadgetID(#LV_GADGET))
    Breite - GetSystemMetrics_(#SM_CXVSCROLL)
  EndIf
  LVM_SetColumnWidth(#LV_GADGET, 0, Breite)
EndProcedure 
;/
Procedure.l Events(event.l)
  Select event 
    Case #PB_Event_SizeWindow
      ResizeGadget(#LV_GADGET, -1, -1, WindowWidth()-5, WindowHeight()-5)
      ResizeListViewColums()
    Case #PB_EventCloseWindow 
      Quit = 1 
  EndSelect
  ProcedureReturn event
EndProcedure
;/
If OpenMyWindow()
  For i = 0 To 20
    AddGadgetItem(#LV_GADGET, -1, Str(i) + Chr(10) + "---" + Chr(10) + "---" + Chr(10) + "---" + Chr(10) + "---")
  Next
  Repeat
    Events(WaitWindowEvent())
  Until Quit
EndIf
End
mfG
Tobi

Verfasst: 29.01.2005 23:11
von Szandor
ChaOsKid hat geschrieben:Microsoft Platform SDK ist meine quelle für die Konstanten Namen :)

so würde ich meine spalten auf listbreite ausdehnen:

mfG
Tobi
Danke für die nette Hilfe :)

War zwar auf einem ähnlichen Weg, doch muss ich sagen finde ich deine Lösung ziemlich gut :)

Bei deinem Beispiel passen sich die Listviews erst wieder an wenn man die Fenstergrösse verändert! Das ist aber kein Problem, Ich habe glaube ich einen Weg gefunden womit ich das noch etwas verbessern kann, hab es aber noch nicht probiert! Werde mich aber jetzt gleich dahinter setzen und es ausprobieren! Wenn ich es weiss poste ich die Lösung.

Szandor

EDIT:

Code gelöscht (alte version)

Ändere das an deinem Code und du siehst wie ich es haben möchte. Genauso hab ich es jetzt gemacht, Danke!! :allright: (im grunde kann man es aus dem select gleich rausnehmen)...
Ist zwar nicht ideal, aber ein anfang... so kann ich es nicht lassen, aber mal sehen wie ich das etwas besser hinkriege :)

OK, der IDEALE Weg ist der:

Code: Alles auswählen

Procedure.l Events(event.l)
  Select event
    Case 15
      ResizeGadget(#LV_GADGET, -1, -1, WindowWidth()-5, WindowHeight()-5)
      ResizeListViewColums()
    Case #PB_Event_SizeWindow
      ResizeGadget(#LV_GADGET, -1, -1, WindowWidth()-5, WindowHeight()-5)
      ResizeListViewColums()
Weiss jemand was die 15 für ne Konstante ist? Wäre interessant, aber eigentlich auch egal, so gehts so wie ich es wollte!

Hmmm naja gut, lassen wir das :(.... geht so wohl auch nicht so toll... das 15 ist anscheinend irgendso ein allgemeiner wert der viel öfters auftritt... wenn ich starte dann durchläuft das hunderte mal und nicht nur wenn ich es vergrössere, ich denke das kann ich nur mit einem callback abfangen *gleich probiert*
*saugt gleichmal das MS PSDK*

Verfasst: 30.01.2005 00:06
von ChaOsKid
ich schätze es ist #WM_PAINT /#PB_Event_Repaint

nur zum spalten anpassen langt ja die ResizeListViewColums() funktion

aber wann (ausser beim resize) muss man die spaltenbreite anpassen ?

Verfasst: 30.01.2005 00:32
von Szandor
ChaOsKid hat geschrieben:ich schätze es ist #WM_PAINT /#PB_Event_Repaint

nur zum spalten anpassen langt ja die ResizeListViewColums() funktion

aber wann (ausser beim resize) muss man die spaltenbreite anpassen ?
Da man auch Schriftgrösse und dergleichen ändern kann, will ich ziemlich variabel bleiben :) - also wenn man die grösse der tabellle ändert soll es sich nachher anpassen und nicht erst wenn man das fenster grösser macht... Im Grunde könnte man es ja fix machen, aber ich stell mir das so nicht vor... eben genau so wie ich es oben (den Code meine ich) geschrieben habe, nur eben ohne nebeneffekte :(... naja mal sehen, sauge mir mal dieses Platform SDK, da gibts sicher was... Die spinnen ja :) 1 GB auf der Platte... was ist da bitte drin? jede doku in 100 sprachen? *g*...

Verfasst: 30.01.2005 02:28
von ChaOsKid
bei so speziellen sonderfällen würde ich direkt nach dem festlegen der einstellungen einmal ResizeListViewColums() aufrufen und schon stimmt wieder alles :)
1 GB auf der Platte... was ist da bitte drin? jede doku in 100 sprachen? *g*
schön wäre es, leider nur haufenweise englische funktionsbeschreibungen.

Verfasst: 30.01.2005 12:45
von Szandor
ChaOsKid hat geschrieben:bei so speziellen sonderfällen würde ich direkt nach dem festlegen der einstellungen einmal ResizeListViewColums() aufrufen und schon stimmt wieder alles :)
Nach dem Festlegen der Einstellungen? Du meinst nachdem man auf File / Options klickt? Hmmm :? ... Ja, vielleicht mache ich ja eine Tastenkombination dafür (und eben auch im Menü auffindbar)... Was sagst du dazu? Ich glaube das wäre die beste Lösung. :)
ChaOsKid hat geschrieben:
Szandor hat geschrieben:1 GB auf der Platte... was ist da bitte drin? jede doku in 100 sprachen? *g*
schön wäre es, leider nur haufenweise englische funktionsbeschreibungen.
Ja, habs schon gesehen... Naja das ist MS.. *ist sich sicher das er nicht mehr zu sagen braucht* :D...
Aber die Windows APIs funktionieren auf alle Fälle wirklich prima :allright:.




@ALL
Morgen ist Montag, und da wird dann wieder fleissig weiter gearbeitet an der DVD DB, dann werde ich gleich einmal die Tastenkombination einbauen, und vielleicht schon export- und print- Funktionen einbauen!

Wäre auch dankbar wenn mir jemand die Sachen was nicht gut übersetzt sind bzw noch in Deutsch sind ins Englische übersetzen könnte. Ich bin leider nicht so gut in Englisch.

Ausserdem würde ich gerne wissen was ihr von dem Programm bisher haltet! Bzw. was geändert werden sollte... was rein soll... usw...

Danke schon im vorraus für Eure mithilfe.
Immerhin will ich ein Programm schaffen was jeder der viele CDs hat brauchen kann!! :) /:->

EDIT: habe 0.955 gerade auf den UpdateServer geschmissen, nun funktioniert auch das Resize der Colums automatisch wenn man die Fenstergrösse ändert!