ListIconGadget und #PB_ListIcon_HeaderDragDrop

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
Kai
Beiträge: 264
Registriert: 29.09.2005 20:58
Computerausstattung: iMac 2019
Wohnort: Hannover
Kontaktdaten:

ListIconGadget und #PB_ListIcon_HeaderDragDrop

Beitrag von Kai »

Mit folgendem Code möchte ich demonstrieren wie es leicht möglich ist die Reihenfolge der Spalten vom ListIconGadget zu speichern und sie wiederherzustellen.

http://msdn.microsoft.com/de-de/bb761161
http://msdn.microsoft.com/de-de/bb774913

Code: Alles auswählen

EnableExplicit

;PureBasic 4.30 B3

#ColumnCount   = 6

Global Dim ColumnOrderArray.i(#ColumnCount - 1)

Global iFile.i
Global iNext.i
Global sFile.s = GetHomeDirectory() + "Desktop\ColumnOrderArray.dat"

If OpenWindow(0, 0, 0, 640, 480, "Beispiel: Spaltenreihenfolge vom ListIconGadget", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
 ListIconGadget(0, 5, 5, WindowWidth(0) - 10, WindowHeight(0) - 10, "Spalte 1", 80, #PB_ListIcon_HeaderDragDrop)
 For iNext = 1 To #ColumnCount - 1
  AddGadgetColumn(0, iNext, "Spalte " + Str(iNext + 1), 80)
 Next
 
 ;Read ColumnOrderArray
 iFile = ReadFile(#PB_Any, sFile)
 If iFile
  For iNext = 0 To ArraySize(ColumnOrderArray())
   ColumnOrderArray(iNext) = ReadInteger(iFile)
  Next
  CloseFile(iFile)
  SendMessage_(GadgetID(0), #LVM_SETCOLUMNORDERARRAY, #ColumnCount, @ColumnOrderArray())
 EndIf
 
 While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend
 
 ;Save ColumnOrderArray
 If SendMessage_(GadgetID(0), #LVM_GETCOLUMNORDERARRAY, #ColumnCount, @ColumnOrderArray())
  iFile = CreateFile(#PB_Any, sFile)
  If iFile
   For iNext = 0 To ArraySize(ColumnOrderArray())
    WriteInteger(iFile, ColumnOrderArray(iNext))
   Next
   CloseFile(iFile)
  EndIf
 EndIf
 
EndIf
Zuletzt geändert von Kai am 18.10.2008 19:13, insgesamt 1-mal geändert.
Meine Homepage - Aktuelle Projekte - Launcher
Letzte PB-Version - Window 7 x86
marco2007
Beiträge: 906
Registriert: 26.10.2006 13:19
Kontaktdaten:

Beitrag von marco2007 »

Signatur 4.20, Code aber eher 4.30?
Windows 11 - PB 6.03 x64
_________________________________
Benutzeravatar
Kai
Beiträge: 264
Registriert: 29.09.2005 20:58
Computerausstattung: iMac 2019
Wohnort: Hannover
Kontaktdaten:

Beitrag von Kai »

marco2006 hat geschrieben:Signatur 4.20, Code aber eher 4.30?
Ja Entschuldigung irgendwie achte ich nie auf meine Signatur.
Meine Homepage - Aktuelle Projekte - Launcher
Letzte PB-Version - Window 7 x86
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Beitrag von Shardik »

Warum das Rad immer neu erfinden? :wink:
Wenn Du die Suche genutzt hättest (z.B. mit "save column order" im englischen Forum, dann der 2.Beitrag), wärest Du auf meine Lösung von 2005 gestoßen, die dann lediglich noch an PB 4 hätte angepaßt werden müssen:
http://www.purebasic.fr/english/viewtop ... 44&start=3
Benutzeravatar
Kai
Beiträge: 264
Registriert: 29.09.2005 20:58
Computerausstattung: iMac 2019
Wohnort: Hannover
Kontaktdaten:

Beitrag von Kai »

Shardik hat geschrieben:Warum das Rad immer neu erfinden? :wink:
Wenn Du die Suche genutzt hättest (z.B. mit "save column order" im englischen Forum, dann der 2.Beitrag), wärest Du auf meine Lösung von 2005 gestoßen, die dann lediglich noch an PB 4 hätte angepaßt werden müssen:
http://www.purebasic.fr/english/viewtop ... 44&start=3
Schon mal denn unterschied bzw überlegt warum dieses Forum Deutsches Forum und nicht englisches heißt?
Nicht jeder der hier ließt sucht auch im englischen.
Da ich also hier nix gefunden habe und es eh für meiner aktuellen Anwendung benötigt habe, dachte ich mir es kann der eine oder andere gebrauchen, nur frage ich mich grad wo der sinn in deinen Post steckt außer das du drauf aufmerksam machen willst das du schneller als ich warst oder so. :|
Meine Homepage - Aktuelle Projekte - Launcher
Letzte PB-Version - Window 7 x86
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Beitrag von Shardik »

Hallo Kai,

entschuldige bitte, wenn mein Posting zu negativ herüberkam. Ich wollte Deine Lösung und Dein Bestreben, Deine Lösung auch Anderen zur Verfügung zu stellen, in keiner Weise schlechtmachen. Ich wollte lediglich deutlich machen, daß eine Suche auch im englischen Forum oder über Google den Zeitaufwand für die Lösung eines Programmierproblems oft stark verringern kann.

Natürlich ist mir klar, daß dies ein Deutsches Forum ist. Trotzdem möchte ich alle deutschen Forumsmitglieder in diesem Forum anregen, auch im englischen Forum nach Lösungen zu suchen, wobei mir klar ist, daß die Suchfunktion leider nicht das Gelbe vom Ei ist. Wenn jetzt jemand meint, zu wenig Englisch zu können: dies mag ja auf den begleitenden Text in den Postings zutreffen, den manche vielleicht nicht ausreichend verstehen, aber die Beispiel-Programme sollte man auch so verstehen können (schließlich sind ja alle PureBASIC-Anweisungen und -Befehle auch in Englisch).

Außerdem gibst Du selbst zwei (englischsprachige) MSDN-Links an, was ich übrigens prima finde, weil man so ohne die sonst fällige Google-Suche direkt die Microsoft-Dokumentation zu den beiden in Deinem Programm-Beispiel verwendeten Kern-Funktionen finden kann.

Ich selbst habe auch schon oft im englischen Forum mit Links auf Lösungen im deutschen Forum verwiesen. Und die englischsprachigen Forumsmitglieder haben auch etwas mit den Programm-Beispielen im Deutschen Forum anfangen können. Ich kann sowieso nur jedem angehenden Programmierer raten, seine Englischkenntnisse aufzufrischen und häufig auch englischsprachige Foren zu besuchen. Da ich selbst schon viele Jahre meinen Lebensunterhalt als festangestellter Programmierer verdiene, kann ich nur immer wieder die Wichtigkeit der englischen Sprache betonen, da auch die meisten Handbücher und Dokumentationen (z.B. Microsofts MSDN oder die GTK-Dokumentation von Linux) nur auf Englisch vorliegen. Bei einem Einstellungsgespräch mit einem neuen Programmierer sind daher mangelnde Englisch-Kenntnisse zwangsläufig ein KO-Kriterium. Dies gilt natürlich in keinster Weise für Hobby-Programmierer, aber auch für die wären Kenntnisse der englischen Sprache zumindest ungemein hilfreich bei der Internet-Recherche nach Problemlösungen, die oft nicht in Deutscher Sprache vorliegen...

> nur frage ich mich grad wo der sinn in deinen Post steckt außer das du drauf aufmerksam machen willst das du schneller als ich warst oder so.

Der Sinn liegt darin, daß es nicht derselbe Code ist. So archiviere ich z.B. seit 2003 alle für mich relevanten Code-Beispiele aus dem Deutschen und Englischen Forum (eine Art privates Code-Archiv a la PureArea.Net). Ein Code-Beispiel zum gleichen Thema speichere ich nach einem kurzen Funktionstest mehrfach ab, wenn der Code eigenständig und nicht nur "abgekupfert" ist. Wenn ich dann später einen Beispiel-Code für ein eigenes Programm benötige, schaue ich mir immer alle Versionen zu diesem Thema an. So habe ich mir auch Dein Beispiel abgespeichert. Benötige ich dann bei einem Projekt diese Funktion, dann schaue ich mir Dein Beispiel und meins und eventuelle weitere an und wähle dann den Code aus, der zu dem Zeitpunkt nach meiner Meinung der kürzeste, eleganteste und der mit der besten Performance ist. Dies muß nicht zwangsläufig meiner sein, denn auch mein Programmierstil verändert (verbessert <) ) sich noch mit der Zeit (selbst nach 27 Jahren Programmierpraxis :lol: ). So habe ich in meinem Beispiel von 2005 einige Details entdeckt, die zwar nicht unbedingt falsch sind, aber die ich heute nicht mehr so programmieren würde. :twisted:

Ich sehe wahrscheinlich mittlerweile alles zu sehr aus dem Blickwinkel des Arbeitgebers nach dem Motto "Zeit ist Geld". Um effektiv zu programmieren, sollte man heutzutage Google und die Boardsuche so oft wie möglich einsetzen und nicht versuchen, "das Rad neu zu erfinden". Für einen Hobby-Programmierer oder Anfänger kann aber genau dies sinnvoll sein, weil man auf diese Weise viel intensiver lernt und bessere und schnellere Lernerfolge hat, als wenn man "nur" Code-Beispiele sucht und diese nachzuvollziehen sucht. Entschuldige daher, wenn ich alles aus einem zu einseitigen "Arbeitgeber"-Blickwinkel betrachtet habe... :wink:
Benutzeravatar
Kai
Beiträge: 264
Registriert: 29.09.2005 20:58
Computerausstattung: iMac 2019
Wohnort: Hannover
Kontaktdaten:

Beitrag von Kai »

OK Shardik, ich bin ehrlich, ich dachte du wolltest damit nur sagen das du das bereits hattest bzw schneller warst und hab mich bissel runtergemacht gefühlt (in etwa, nu gibt man sich mühe und postet dann auch denn erfolg und als dank wird man angemacht), aber naja, Missverständnis.

Ich selbst programmiere nur aus Spaß am Hobby, dabei sag ich mir dann immer mal gerne, was ich heute nicht schaffe mach ich morgen, es soll ja Spaß machen und nicht nur schnell gehen, außerdem versuche ich es immer zuerst komplett selbst, denn aus Copy und Paste lernt man einfach nicht so viel als wenn man es selbst schaft.
Naja und da es dann halt gut funktionierte und ich hier nix dazu fand dachte ich mir ab damit ins Forum.
Das es nun bereits im englischen was gibt, daran hab ich nicht gedacht.

War aber echt mal interessant es aus deinen Blickwinkel zu hören. :allright:
Meine Homepage - Aktuelle Projekte - Launcher
Letzte PB-Version - Window 7 x86
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

Shardik hat geschrieben:...... So archiviere ich z.B. seit 2003 alle für mich relevanten Code-Beispiele aus dem Deutschen und Englischen Forum (eine Art privates Code-Archiv a la PureArea.Net).
Würdest Du diese "private" CodeArchiv mit der PB-Community teilen wollen, indem Du mir Deine Code-Sammlung für das "offzielle" CodeArchiv zur Verfügung stellst? Ideal wäre dann Du in Deinen Codes auch entsprechende Informationen über Autor, Forum-Link usw. mit drin hättest... 8)

Ist nur eine Frage - ich könnte durchaus verstehen, wenn Du das zur Verfügung stellen nicht gern machen möchtest ..... jedenfalls bei Interesse bitte Email an andre [at] purebasic.com

PS: Credits wären Dir dann natürlich sicher :allright:
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Antworten