Suchergebnisse

Suchergebnisse 1-22 von insgesamt 22.

  • Benutzer-Avatarbild

    Zitat von tragl: „Die Sortierung wird über die "ORDER BY"-Klausel festgelegt - das passt soweit.“Das ist vermutlich Zufall, dass das bislang passt. Wenn länger mit der DB gearbeitet wird, Datensätze zukommen und wieder weggelöscht, dann kann iwann der Zustand eintreten, dass ein Datensatz mit Typ 'c' geliefert wird, bevor überhaupt je ein Typ 'p' vorkam. Das ergäbe dann eine NullReference-Exception, weil's noch keinen ParentNode gibt zum Adden. Wahrscheinlicher (und hinterhältiger, weil keine Ex…

  • Benutzer-Avatarbild

    Zitat von tragl: „Um zusätzlich noch einen Key zu vergeben ....“Das mit den Keys bei Treenodes findich total überbewertet. Treenode hat zB die Property .FullPath, das ist glaub besser als deine Keys. Weil der FullPath ist logisch aufgebaut (wie zB DateiPfade), und wennde die Treenodes anguckst, weiste, wie der FullPath lautet - das kann manchmal ein Vorteil sein, v.a. scheint mir das transparenter. Ziemlich fragwürdig finde ich, dass dein Treeview anders strukturiert als die Datenbank. Also der …

  • Benutzer-Avatarbild

    Jo, und wo man jetzt die DB sieht: Die Reihenfolge ist tatsächlich korrekt, und tatsächlich sortiert Order By Bezeichnung die Datensätze so, dass Root-, Parent- und Child-Typen in für die Verarbeitung korrekter Reihenfolge antraben. Könnte nur imo hübscher gemacht wern: Spalte Typ abschaffen, SortKey und Bezeichnung trennen, evtl. Key auch abschaffen. Ups - da fällt mir ein anderer logischer Fehler auf: Order By Bezeichnung geht nur solange gut, wie der SortKey einstellig bleibt. Weil das wird j…

  • Benutzer-Avatarbild

    ich hab auch mal eine Treeview-Navigation auf TabPages gemacht. Aber nur die Navigation - Doppelklick zum iwas ausführen hab ich unterlassen. Guggemol TabControl ohne Reiter - TreeviewFrameset Naja, guggemol. Mag sein ist etwas advanced. Was ich noch unterlassen hab, die Programm-Modul-Namen (Alias Tab-Beschriftungen/Namen) aus einer Datenbank zu lesen. Das wird bei mir einfach im Treeview-Designer abgehandelt. Aber kann man natürlich auch anners machen.

  • Benutzer-Avatarbild

    Zitat von tragl: „Will aber dennoch flexibel sein, dass wenn ich dem Programm was hinzufüge oder entferne, nicht auch noch an den Code des TreeView muss.“Wenn du am Programm was änderst, dann musst du eh am Programm was ändern - zB TabPage hnzufügen, Controls drauf und was. Und da eben noch im TV den Navigations-Node eintragen... Ist dann doch sogar einfacher, als in die DB wechseln, und da herumhampeln, und zusehen, dasses mittm Programm auch synchron ist etc.

  • Benutzer-Avatarbild

    wie du wolle, und wie dem auch sei. Ich hab jedenfalls mal deinen Code bischen aufgehübscht - ich hoffe, du findest darin ein paar Techniken, die für dich auch im weiteren nützlich sind:VB.NET-Quellcode (40 Zeilen) Wichtige Punkte:- TryCatch weg. So wie der TryCatch war, war er unnötig kompliziert, und schiesst dir nur ins Knie. Wenn das Menü nicht gelesen werden kann, dann muss die Anwendung beenden. Also schmeiss eine Exception - nicht fangen. Oder besser noch wie ichs nu gemacht hab: Ich hab …

  • Benutzer-Avatarbild

    Zitat von tragl: „-mit {VARIABLE} können generell Variablen abgerufen werden? Oder "nur" in z.B. einem SQL-String? Ich kenn das nur mit & VARIABLE & - was dann auf den ersten Blick den Code unübersichtlich machen kann. mit den {} finde ich schöner. -das $-Zeichen vor dem Connect-String bewirkt genau was?“ Das ist ein neueres Feature von .Net, es heisst "String-Interpolation". Strings mit String-Interpolation sind gekennzeichnet durch vorangestelltes $. Wenn dem so ist, kann man innerhalb des Str…

  • Benutzer-Avatarbild

    Zitat von tragl: „Keys mit eingefügt und kann mir somit die Prozeduren aufrufen“tja, sowas ist eher nicht vorgesehen. Deine Keys sind Daten, und Daten sind kein Code. Aber hatte ich schon erwähnt: Es reicht doch, den Treeview zur Navigation auf die jeweilige Tabpage zu nutzen - auf der TabPage dann mögen Buttons sein, wo der User dann was tun kann. Aber wenn du unbedingt mit NodeDoubleClick Aktionen auslösen willst, musste wohl einen grossen Select Case schreiben, und je nach Key die gewünschte …

  • Benutzer-Avatarbild

    Zitat von tragl: „Hast du noch einen Ansatz, wie ich die Root-Nodes in "Fett" dargestellt bekomme?“OwnerDrawing Da muss man das Treeview.DrawNode-Event verarbeiten und den NodeText selbst reinmalen. Zuvor muss man im Designer TV.DrawMode.OwnerDrawText einstellen. Und dann in die Graphics des EventArgs zeichnen. Das nervige daran ist - naja, mehrere Sachen- die Treenode-Breite ist für normalen Text berechnet - daher reicht der Platz nicht, und man muss tricksen (etwa durch Spaces an den Text anhä…

  • Benutzer-Avatarbild

    nochma String-Interpolation:VB.NET-Quellcode (4 Zeilen)kann sowohl " & " als auch .ToString entbehrlich machen ansonsten würde ich dringend empfehlen, mit typisiertem Dataset zu arbeiten. Das kommt am Ende typsicher und leserlicher raus:VB.NET-Quellcode (3 Zeilen)Also was zuvor mit 'StringSmells' für den Compiler unüberprüfbar zugegriffen wurde wird benannten Properties (rw.Typ, rw.Key, rw.Nr, rw.Bezeichnung) mit definiertem Datentyp (hier: alle As String, kann aber auch verschiedenste annere Da…

  • Benutzer-Avatarbild

    nach welcher Spalte willst du denn sortieren? Achja - nach Bezeichnung. Nun - das geht schief, sobald ein ZahlenSegment mehrstellig wird. Weil Datenbanken und Dataview sortieren Texte lexicografisch das bedeutet: "3" ist grösser als "11". Deine "Bezeichnungen" stellen aber eine "TableOfContent" dar, und solch ist sehr speziell zu sortieren. Wenn du dein Dataset im Dataset-Designer erstellt hast, dann hast du bereits ein typisiertes Dataset. Dann solltest du es aber auch benutzen - also lernen, w…

  • Benutzer-Avatarbild

    problem bleibt dasselbe: Wenn die Nummern String sind und nach Art eines InhaltsVerzeichnisses gebildet werden bedürfen sie einer speziellen Sortierung. Aber du kannst dein Projekt auch zippen und anhängen, inklusive BeispielDaten. Dann kann ich recht schnell aufzeigen, was mit typisierter Programmierung eines typisierten Datasets gemeint ist. Aber probier deinen Upload bitte selber aus - man soll ihn downloaden können, entpacken und im VisualStudio starten ohne erstmal 100 Fehlermeldungen beheb…

  • Benutzer-Avatarbild

    kann ich nicht öffnen. Zitat: „--------------------------- Fehler --------------------------- C:\Users\Account2\Downloads\Logistik-Tool.rar Das Archiv hat entweder ein unbekanntes Format oder ist beschädigt. --------------------------- OK --------------------------- “Mach doch einfach ein zip: Kontextmenü-SendenAn-zip-komprimierten Ordner

  • Benutzer-Avatarbild

    So, erstmal habich Visual Studio - Empfohlene Einstellungen für dich erledigt. In Zukunft bitte selbst erledigen. Ist das wichtigste, was du aus diesem Thread lernen kannst, ist Vorraussetzung, dass du überhaupt programmieren lernen kannst. Dann die gruseligsten Benamungen korrigiert: Klassen beginnen mit GrossBuchstabe. Das gilt auch für Tabellen im TypDataset. und DateiNamen, Ordner etc. besser ohne Spaces, Minusse, Umlaute. Dein Fehler war datengetrieben - du hattest dem ausgewähltem User den…

  • Benutzer-Avatarbild

    Zitat von tragl: „"schadet" es denn wenn ich viele Module hab? Das nutz ich aktuell damit ich schneller meinen Code wiederfind.“Die Intention ist genau richtig - es zeigt sich darin dein Bedürfnis nach Architektur. Nur die Sprache vb.net bietet bereits ein ausgezeichnetes Instrumentarium, Architektur zu entwickeln: Namespaces, Klassen, Vererbung. Module sind ein VB6-Relikt und haben in diesem System keinen Platz. Man sieht es an der Intellisense, dass was in einem Modul angelegt ist, global und …

  • Benutzer-Avatarbild

    Update Ich hab der DataTable jetzt einen eigene SortKey-Spalte spendiert, damit auch die Bindingsource die Tabelle richtig sortieren kann - sodass sich das auch im DGV richtig darstellt. Das vereinfacht nebenbei auch die Tv-Befüllung nochmal. Die TreeDataTable aktualisiert die SortKeys automatisch, wenn eine Nr-Spalte geändert wird.VB.NET-Quellcode (37 Zeilen) Ausserdem die Id-Spalte aus dem DGV verborgen.

  • Benutzer-Avatarbild

    Zitat von tragl: „Also z.B. fülle ich die Tabelle "Tree" mit den Daten aus der XML beim Öffnen der Anwendung, kann ich die in einem späteren Moment (Anwendung bleibt geöffnet), wieder aus dem DS abrufen oder muss dann erst wieder die XML eingelesen werden?“Ich fülle immer das ganze Dataset beim Start der Anwendung. Und ich behalte das Dataset auch während der ganzen Laufzeit im Speicher. Beim Schliessen frage ich ab, ob Änderungen vorhanden sind, und wenn ja, mache ich den Benutzer darauf aufmer…

  • Benutzer-Avatarbild

    du musst natürlich den in e übergebenen Status auswerten, und deine Zeichnung je nachdem anpassen. fiel fergnügen! btw warum hast du .DrawDefault=false gesetzt?

  • Benutzer-Avatarbild

    komisch - in dem von dir verlinkten Beispiel wirds true gesetzt. Wie dem auch seiZitat von ErfinderDesRades: „du musst natürlich den in e übergebenen Status auswerten, und deine Zeichnung je nachdem anpassen. fiel fergnügen!“ ist ein ziemliches Gefuzzel, ForeColor, BackColor, Selectiert, Unselectiert, und bei deaktiviertem Treeview soll die Selection ja grau. Aufs Focus-Rectangle verzichten wir mal. tipp: nicht für jeden ZeichenVorgang einen neuen Font erstellen (äh - derzeit sinds sogar zwei)

  • Benutzer-Avatarbild

    Zitat von tragl: „Ich bekomm's leider nich anders hin alle nodes mit "*parent_*" im Key Fett darzustellen, ohne dass der Text hinten abgeschnitten wird.“Ja, das liegt daran, das der Treeview die Breite der Nodes berechnet aufgrund seines (not bold) Fonts. Zum Zeichnen stellt er dann ein Graphics zur Verfügung, was auch nicht breiter ist. Das ist dann für einen bold-font zu klein. Man könnte bei TopLevel-Nodes Spaces am NodeText anfügen, damit der TV breitere Graphics bereitstellt.

  • Benutzer-Avatarbild

    um alle Nodes eines Trees zu erreichen muss man ihn natürlich rekursiv durchlaufen. tv.Nodes ist nur die NodeCollection des Treeviews. Jeder der Nodes in tv.Nodes hat ja seine eigene NodeCollection. In diesem Post ist zB ein rekursiver Durchgang durch Treenodes: TabControl ohne Reiter Oder ich kann den Part auch auskopieren:VB.NET-Quellcode (9 Zeilen)das Prinzip Rekursion (= "Selbst-Aufruf einer Methode") musste dir aber aneignen - dassis Programmer-Basis-Knowhow. recherchiere mal auf Wiki - ode…

  • Benutzer-Avatarbild

    nochma zum Recurse: Sorry, halt auskopierter Code - richtiger müsste es heissen: VB.NET-Quellcode (9 Zeilen)