Seite 1 von 1

ListIconGadget und #PB_ListIcon_HeaderDragDrop

Verfasst: 18.10.2008 18:33
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

Verfasst: 18.10.2008 18:39
von marco2007
Signatur 4.20, Code aber eher 4.30?

Verfasst: 18.10.2008 19:12
von Kai
marco2006 hat geschrieben:Signatur 4.20, Code aber eher 4.30?
Ja Entschuldigung irgendwie achte ich nie auf meine Signatur.

Verfasst: 20.10.2008 11:28
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

Verfasst: 20.10.2008 17:41
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. :|

Verfasst: 21.10.2008 16:09
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:

Verfasst: 21.10.2008 20:56
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:

Verfasst: 26.10.2008 20:27
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: