[erledigt] PureLVSORT_SetColumnWidth() - Beispiel gesucht

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

[erledigt] PureLVSORT_SetColumnWidth() - Beispiel gesucht

Beitrag von scholly »

moin, moin...

Hat wer einen funktionierenden Code für PureLVSORT_SetColumnWidth() aus dem ich dessen Anwendung lernen kann ?

Und was bedeutete für #PureLVSORT_AutoSize "Automatically sizes the column"
So breit wie der längste Inhalt ?

tia... scholly
Zuletzt geändert von scholly am 17.05.2008 16:54, insgesamt 1-mal geändert.
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
gnozal
Beiträge: 219
Registriert: 04.12.2004 13:01
Wohnort: Frankreich (67)
Kontaktdaten:

Re: PureLVSORT_SetColumnWidth() - Beispielcode gesucht

Beitrag von gnozal »

scholly hat geschrieben:moin, moin...
Hat wer einen funktionierenden Code für PureLVSORT_SetColumnWidth() aus dem ich dessen Anwendung lernen kann ?

Code: Alles auswählen

#Window_0 = 0
#ListIcon_0 = 0
Procedure Open_Window_0()
  If OpenWindow(#Window_0, 216, 0, 602, 302, "PureLVSORT Test", #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
    If CreateGadgetList(WindowID(0))
      ListIconGadget(#ListIcon_0, 5, 5, 590, 285, "String", 100)
      AddGadgetColumn(#ListIcon_0, 1, "DateDDMMYYYYHHMMSS", 100)
      AddGadgetColumn(#ListIcon_0, 2, "DateDDMMYYHHMM", 100)
      AddGadgetColumn(#ListIcon_0, 3, "DateDDMMYYYY", 100)
      AddGadgetColumn(#ListIcon_0, 4, "DateMMDDYYYY", 100)
      AddGadgetColumn(#ListIcon_0, 5, "FileSize", 100)
      AddGadgetColumn(#ListIcon_0, 6, "NoSorting", 100)
      AddGadgetItem(#ListIcon_0, -1, "ABCDE" + Chr(10) + "12/05/2001 06:41:30" + Chr(10) + "19/07/66 06:41" + Chr(10) + "31/12/2004" + Chr(10) + "12/31/2004" + Chr(10) + "15.02 MB" + Chr(10) + "0")
      AddGadgetItem(#ListIcon_0, -1, "ACDEF" + Chr(10) + "05/07/2004 09:21:30" + Chr(10) + "12/05/01 07:50" + Chr(10) + "11/12/2004" + Chr(10) + "12/11/2004"  + Chr(10) + "65 B" + Chr(10) + "1")
      AddGadgetItem(#ListIcon_0, -1, "ZABCD" + Chr(10) + "19/11/2003 07:18:31" + Chr(10) + "13/08/03 06:41" + Chr(10) + "21/01/2003" + Chr(10) + "01/21/2003" + Chr(10) + "5.98 GB" + Chr(10) + "3")
      AddGadgetItem(#ListIcon_0, -1, "DEFGH" + Chr(10) + "19/11/2003 06:21:30" + Chr(10) + "12/05/01 06:41" + Chr(10) + "10/06/2001" + Chr(10) + "06/10/2001" + Chr(10) + "100 KB" + Chr(10) + "A")
    EndIf
  EndIf
EndProcedure
Open_Window_0()
; ListIcon Sort Setup
Debug #PureLVSORT_DateDDMMYYYYHHMMSS
If PureLVSORT_SelectGadgetToSort(#ListIcon_0, #PureLVSORT_ShowClickedHeader_IconLeft) = #PureLVSORT_Ok
  PureLVSORT_SetColumnType(#ListIcon_0, 0, #PureLVSORT_String) ; default, not necessary
  PureLVSORT_SetColumnType(#ListIcon_0, 1, #PureLVSORT_DateDDMMYYYYHHMMSS)
  PureLVSORT_SetColumnType(#ListIcon_0, 2, #PureLVSORT_DateDDMMYYHHMM)
  PureLVSORT_SetColumnType(#ListIcon_0, 3, #PureLVSORT_DateDDMMYYYY)
  PureLVSORT_SetColumnType(#ListIcon_0, 4, #PureLVSORT_DateMMDDYYYY)
  PureLVSORT_SetColumnType(#ListIcon_0, 5, #PureLVSORT_FileSize)
  PureLVSORT_SetColumnType(#ListIcon_0, 6, #PureLVSORT_NoSorting)
  ; //////////
  PureLVSORT_SetColumnWidth(#ListIcon_0, 1, #PureLVSORT_AutoSize) ; <------- TRY WITH AND WITHOUT THIS LINE
  ; //////////
EndIf
;
Repeat
  Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
End
scholly hat geschrieben:Und was bedeutete für #PureLVSORT_AutoSize "Automatically sizes the column"
So breit wie der längste Inhalt ?
Yes
For free libraries and tools, visit my web site (also home of jaPBe V3 and PureFORM).
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

Danke...

Sowas solltest Du vielleicht auch als PureLVSORT_SetColumnWidth_EXAMPLE.pb mit Deiner Lib verteilen.

Ich hab das dann mal etwas auf meinen Bedarf umgeschrieben:

Code: Alles auswählen

gelöscht, siehe unten
Gibt es einen Trick, daß die Spalte nicht nur so breit wie seine breiteste Zelle wird, sondern "breiteste Zelle" + "Raum für Pfeil", wobei der Spaltentitel als Zelle IMHO mitzählen sollte ?

bis denne... scholly, der englische Antworten auch oft versteht ;)
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

Gibt es einen Trick, daß die Spalte nicht nur so breit wie seine breiteste Zelle wird, sondern "breiteste Zelle" + "Raum für Pfeil", wobei der Spaltentitel als Zelle IMHO mitzählen sollte ?
Ich glaube, ich hab da was zusammengebracht:

Code: Alles auswählen

Procedure.l PureLVSort_ColMaxWidth(LIG_ID.l,LIG_Col.l)
  Define.l value1, value2, result
  PureLVSORT_SetColumnWidth(LIG_ID, LIG_Col, #PureLVSORT_UseHeader)
  value1 = GetGadgetItemAttribute(LIG_ID.l, 0, #PB_ListIcon_ColumnWidth, LIG_Col.l)
  PureLVSORT_SetColumnWidth(LIG_ID, LIG_Col, #PureLVSORT_AutoSize)
  value2 = GetGadgetItemAttribute(LIG_ID.l, 0, #PB_ListIcon_ColumnWidth, LIG_Col.l)  
  If value1 > value2
    result = value1
  Else
    result = value2
  EndIf
  ProcedureReturn result + 24; für den Pfeil
EndProcedure

#Window_0 = 0
#ListIcon_0 = 0

If OpenWindow(#Window_0, 216, 0, 402, 302, "PureLVSORT Test", #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
  If CreateGadgetList(WindowID(0))
    ListIconGadget(#ListIcon_0, 5, 5, 590, 285, "UID", 100)
    AddGadgetColumn(#ListIcon_0, 1, "Titel", 100)
    AddGadgetColumn(#ListIcon_0, 2, "VeryLongColumnTitle", 100)
    AddGadgetColumn(#listicon_0, 3, "Filler", 200)
  Else
    End
  EndIf
Else
  End
EndIf
;
MessageRequester("Testphase 1 beendet", "Nun werden die Spaltenbreiten an die Spaltenbezeichnungslängen angepaßt")
If PureLVSORT_SelectGadgetToSort(#ListIcon_0, #PureLVSORT_ShowClickedHeader_IconRight) = #PureLVSORT_Ok
  PureLVSORT_SetColumnWidth(#ListIcon_0, 0, #PureLVSORT_UseHeader)
  PureLVSORT_SetColumnWidth(#ListIcon_0, 1, #PureLVSORT_UseHeader)
  PureLVSORT_SetColumnWidth(#ListIcon_0, 2, #PureLVSORT_UseHeader)
Else
  Debug "PureLVSORT_SelectGadgetToSort() <> #PureLVSORT_Ok"
  End 
EndIf
;
MessageRequester("Testphase 2 beendet", "Nun die Spalten füllen")
;
AddGadgetItem(#ListIcon_0, -1, "1"    + Chr(10) + "Alien"         + Chr(10) + "c:\")
AddGadgetItem(#ListIcon_0, -1, "44"   + Chr(10) + "28 Days later" + Chr(10) + "f:\")
AddGadgetItem(#ListIcon_0, -1, "222"  + Chr(10) + "Terminator"    + Chr(10) + "e:\")
AddGadgetItem(#ListIcon_0, -1, "3333" + Chr(10) + "La boum"       + Chr(10) + "d:\")
; 
PureLVSORT_SetColumnType(#ListIcon_0, 0, #PureLVSORT_Numeric) 
PureLVSORT_SetColumnType(#ListIcon_0, 1, #PureLVSORT_String)
PureLVSORT_SetColumnType(#ListIcon_0, 2, #PureLVSORT_String)
; 
MessageRequester("Testphase 3 beendet", "Nun Spaltenbreiten an Zelleninhalte anpassen")
;
PureLVSORT_SetColumnWidth(#ListIcon_0, 0, PureLVSort_ColMaxWidth(#ListIcon_0,0)) 
PureLVSORT_SetColumnWidth(#ListIcon_0, 1, PureLVSort_ColMaxWidth(#ListIcon_0,1)) 
PureLVSORT_SetColumnWidth(#ListIcon_0, 2, PureLVSort_ColMaxWidth(#ListIcon_0,2))
;
MessageRequester("Problem gelöst:", "Bitte mal 1. oder 3. Spalte sortieren ;)")
;
Repeat
  Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
End
Vielleicht kanns der ein oder andere ja gebrauchen/verbessern.

bis denne... scholly
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Antworten