Steuerelementefeld

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von o815michi.

    Steuerelementefeld

    Hallo,

    ich habe folgenden Code um ein Steuerelementefeld zu erstellen.
    Nicht wundern, da fehlen verschiedene Deklarationen für etliche Werte, Felder und Strukturen

    VB.NET-Quellcode

    1. Public Sub zahlen_anzeigen()
    2. 'Angaben 2 für Berechnung
    3. Dim Spalte, Zeile As Integer
    4. Dim Rand_oben_L, Rand_Links_L As Integer
    5. Dim Rand_oben_S, Rand_Links_S As Integer
    6. Dim ZW1 As Double, I, TI As Integer 'Tipp-Index
    7. Dim MEX1, MEY1, MEX2, MEY2 As Integer
    8. Dim GEX, GEY As Integer 'ME.Witdh (X); Gesamt X (der Felder und abstand)
    9. 'Grundwerte berechnen
    10. X_br = Convert.ToInt16(Lottoschein.Muster.Width)
    11. Y_hö = Convert.ToInt16(Lottoschein.Muster.Height)
    12. abstand = 5
    13. MEX1 = Lottoschein.Lbox1.Width - OX
    14. MEY1 = Lottoschein.Lbox1.Height - OY
    15. MEX2 = Lottoschein.Lbox1.Width - OX
    16. MEY2 = Lottoschein.Lbox1.Height - OY
    17. GEX = MaxSp * X_br + (MaxSp - 1) * abstand
    18. GEY = MaxZe * Y_hö + (MaxZe - 1) * abstand
    19. Rand_Links_L = Convert.ToInt16((MEX1 - GEX) / 2)
    20. Rand_oben_L = Convert.ToInt16((MEY1 - GEY) / 2)
    21. Rand_Links_S = Convert.ToInt16((MEX2 - GEX) / 2)
    22. Rand_oben_S = Convert.ToInt16((MEY2 - GEY) / 2)
    23. ReDim LLZ(MaxIx, MaxIx_T) 'Label-Zahl
    24. For B = 1 To 2
    25. For A = 1 To 5
    26. TI = A + (B - 1) * MaxSP_T
    27. For I = 1 To MaxIx
    28. LLZ(I, TI) = New Label
    29. ZW1 = (I - 1) / MaxSp
    30. Spalte = Convert.ToInt16((ZW1 - Math.Truncate(ZW1)) * MaxSp)
    31. Zeile = Convert.ToInt16(Math.Truncate(ZW1))
    32. With LLZ(I, TI)
    33. ' Definiert das Click-Ereignis
    34. AddHandler LLZ(I, TI).Click, AddressOf LLZ_Click
    35. .Parent = Lottoschein
    36. .BringToFront()
    37. .BorderStyle = BorderStyle.FixedSingle
    38. .BackColor = Lottoschein.Muster.BackColor
    39. .Font = Lottoschein.Muster.Font
    40. .TextAlign = Lottoschein.Muster.TextAlign
    41. .Width = X_br
    42. .Height = Y_hö
    43. .Left = Lottoschein.Lbox1.Left + Lottoschein.Lbox1.Width * (A - 1) + Rand_Links_L + (abstand + .Width) * Spalte
    44. .Top = Lottoschein.Lbox1.Top + Lottoschein.Lbox1.Height * (B - 1) + Rand_oben_L + (abstand + .Height) * Zeile
    45. .Tag = I
    46. .Text = I
    47. .Show()
    48. End With
    49. Next : Next : Next
    50. End Sub


    und folgenden Code um auf das Click-Ereigniss zu reagieren

    VB.NET-Quellcode

    1. Private Sub LLZ_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    2. Dim L As Label = CType(sender, Label)
    3. Dim I, TI As Integer
    4. Dim Text As String = ""
    5. Dim Color As Color = Farben.Leer
    6. I = Convert.ToInt16(L.Tag)
    7. ...
    8. L.BackColor = Color
    9. End Sub


    Wie man sieht ist es ja ein Zweidimensionales Steuerelemente-Feld, was sich an anderen Steuerelementen ausrichtet. (Group-Box)

    Meine Frage ist:

    Wie bekomme ich im Click-Ereigniss gesagt, welches Steuerelement ich gerade geklickt habe, ohne mir das über die Tag-Eigenschaft mitzuteilen oder alle Labels "Bist du der Richtige" zu fragen.
    Gibt es irgendeine Funktion oder Eigenschaft, die mir die zwei Indexe liefert?

    Grüße

    o815michi schrieb:

    Gibt es irgendeine Funktion oder Eigenschaft, die mir die zwei Indexe liefert?

    Als direkte Antwort auf Deine Frage: Nein, wie denn auch ?

    Du bekommst das Label ja im EventHandler mitgeliefert, woher soll das Label wissen in welchen Arrays, Listen etc. es selber gespeichert wurde und welche dieser Informationen Du gerade brauchst. Auch die EventArgs geben so nichts her ( das MouseUP event würde immerhin die MouseKoordinaten liefern).

    Aber Gegenfrage: warum überhaupt die Labels umständlich in einem 2-dimensionalen Array ablegen ?? Und warum so viel Wert auf die Indices ? Imho ein Designfehler.

    Möchtest Du dennoch (aus welchem Grund auch immer) dabeibleiben, so lege den Index entweder
    a) in dem Tag ab , dieses ist ein Objekt und kann z.B. eine Struktur ( z.B. Point(x,y) ) aufnehmen, oder ein String "I,J"
    b) in dem Namen ab ( z.B. Label0112)
    Hallo,


    woher soll das Label wissen in welchen Arrays, Listen etc. es selber gespeichert wurde


    In VB6 war das möglich. da wurde dann sie Sub-Routine mit Test(Index1 as integer, Index2 as integer) aufgerufen.
    (Wenn ich mich recht erinnere.)

    warum überhaupt die Labels umständlich in einem 2-dimensionalen Array ablegen ?? Und warum so viel Wert auf die Indices ?


    Es gibt sicherlich andere Möglichkeiten.
    Über 500 Labels (MaxIx=49 und da fehlt noch einiges) auf ein Formular bringen und vor allen Dingen den Code dafür Schreiben, kommt für mich nicht in Frage. das ist einfach zuviel.
    Auch alle Labels in eine 1-Dimensionalen-Array unterbringen bringt mehr Rechenleistung und vor allen Dingen mehrUnübersichtlichkeit mit sich.
    Die Indexe sind wichtig um zu wissen, welches Label ich gerade anspreche. Ich Speichere ja die Indexe (indirect) Außerdim dienen die Indexe als Rechengrundlage. Ähnliche Rechnungen wie bei dem Erstellen muss ich auch bei den Weiterverarbeitenden Funktionen anwenden. z.B. ob zwei Zahlen nebeneinander, oder übereinander sind etc.


    in dem Tag ab , dieses ist ein Objekt und kann z.B. eine Struktur

    Das ist mir auch schon aufgefallen. Allerdings hat es nicht wirklich gefunzt, deshalb hatte ich mich für ne Textvariante im Tag entschieden, die ich mit Split wieder - raushole.
    Wäre schön wenn mal was einfach wäre:
    Wer bist du?
    Der 7. aus der 3.Liste


    Danke Trotzdem.

    p.s. für Verbesserungsvorschläge bin ich ertmal zu haben...
    Der Spaß ist nämlich recht langsam.
    hmm, ein paar Sachen verstehe ich bei der Grundlage Deines Designs und ein paar noch nicht richtig:
    - Index als Grundlage der Koordinatenentwicklung: ok kann man machen, aber das kann man zur Vereinfachung machen um die Label zu plazieren, nur muss man sie danach nicht speichern
    - warum Label wenn es um gleichmässige(??) Anordung geht, dafür gibt es bessere Elemente wie ListViev oder Datagrid ( um quasi ein Excel-Bild zu schaffen)
    - inwieweit es wichtig ist zu ermitteln ob Zahlen über/untger/nebeneinander sind kann ich nicht beurteilen, aber auch da wohl eher DataGrid, Listview, ...

    Ich war/bin mir nicht sicher ob Du verstehst was Du beim EventHandler in Form von Sender mitbekommst: nämlich die Referenz auf das eigentliche Label selber. D.h. mit

    VB.NET-Quellcode

    1. Private Sub LLZ_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    2. ' sender kann man auf das Label casten(!)
    3. dim lbl as label=CType(sender,Label)
    4. ' nun hat man Zugriff auf das eigentliche Label selber mit allen(!) seiner eigenschaften wie z.B.
    5. lbl.BackColor=color.blue
    6. lbl.Text="0815"

    kann man alle Felder des geclickten Labels lesen und auch verändern. Also wozu der eigentlich unwesentliche Index.

    o815michi schrieb:

    Der Spaß ist nämlich recht langsam.

    Dynamisch erzeugte Controls sind in diesen Mengen natürlich langsam, daher auch der Hnweis auf andere Arten von Controls, von denen es einge gibt.

    Nur kann ich nicht abschätzen wieviel Grundwissen Du überhaupt mitbringst, da AddHandler und dynamisch erzeugte Controls schon nicht mehr ganz zum Anfängerwissen zählen.

    Im Zweifelsfall also hier im Forum schon vor dem Design nach Ideen fragen, das spart Mühe und späteren Frust ...
    Hallo,

    - warum Label wenn es um gleichmässige(??) Anordung geht, dafür gibt es bessere Elemente wie ListViev oder Datagrid ( um quasi ein Excel-Bild zu schaffen)


    Mit Datagrid hab ich mich noch nicht beschäftigt, aber vermutlich passt das Design und die Einstellungen nicht zu meinen Designvorstellungen.
    Die sagen nun mal lauter kleine einzelne "Fenster" mit Zahlen drin.


    kann man alle Felder des geclickten Labels lesen und auch verändern. Also wozu der eigentlich unwesentliche Index.


    Stimmt, Soweit sogut. Das Programm soll das aber in einer Datei Speichern. Übersichtlich. Dazu gibt es einen ausfühlichen Boolean Array.
    Dieser ist in Verschachtelten Structuren untergebracht wo dann noch andere Daten wie das Datum dazukommen.
    Die Frage, ob ich das Label direct speichern kann, stellt sich gar nicht. Ich möchte es übersichtlich. Demnach speichere ich den Index. Dann kann ich immer wieder nachvollziehen welcher markiert ist, ohne die Farbeeigenschaft bemühen zu müssen.


    VB.NET-Quellcode

    1. With DL(1).Gewinnzahlen(HS1.Value)
    2. If Gewinnzahlen = False And Check2.Checked = False Then
    3. 'tip eingeben
    4. DL(1).Tip(HS1.Value).LZ(I).Markiert = Not DL(1).Tip(HS1.Value).LZ(I).Markiert
    5. If DL(1).Tip(HS1.Value).LZ(I).Markiert Then Color = Farben.LZ
    6. ElseIf Gewinnzahlen = True And Check2.Checked = False Then
    7. 'Gewinnzahlen eingeben
    8. .LZ(I).Markiert = Not (.LZ(I).Markiert)
    9. If .LZ(I).Markiert Then Color = Farben.GZ
    10. ElseIf Gewinnzahlen = True And Check2.Checked = True Then
    11. 'Zusatzzahl eingeben
    12. .LZ(I).Markiert = Not .LZ(I).Markiert
    13. .ZZ = Convert.ToInt16(L.Tag)
    14. If .LZ(I).Markiert Then Color = Farben.ZZ
    15. End If
    16. End With


    Ursprünglich sah der Code mal so aus. DL(1) ist die Struture. Allerdings war das nur ein Test für die Formeln.
    Durch die 10 Darstellungen erspart man sich einiges an Auswahl. achja, Farben ist die Farbstructure, die die Farben für jeden Zustand enthält...

    Grüße

    Kangaroo schrieb:

    Ich war/bin mir nicht sicher ob Du verstehst was Du beim EventHandler in Form von Sender mitbekommst: nämlich die Referenz auf das eigentliche Label selber.

    Noch einmal, ist das Dir klar ??

    o815michi schrieb:

    Mit Datagrid hab ich mich noch nicht beschäftigt, aber vermutlich passt das Design und die Einstellungen nicht zu meinen Designvorstellungen.
    Die sagen nun mal lauter kleine einzelne "Fenster" mit Zahlen drin.

    Und was bitte sehr ist ein ListView anderes als genau das ? Das LV kann beliebig viee Spalten haben, wobein natürlich nicht nur Zahlen dargestellt werden können. Mit Datagrid würde es genauso gehen, allerdings etwas schwerer zu handhaben und eher für Datenbanken + Eingaben anwendbar. Wobei , wenn es um Lottozahlen geht, der Lottoschein/das Minifenster wohl noch mehr enthält als reine Zahlen , nämlich Designelemente (Groupbox, Checkbox ?). Das würde eher auf eine Art UserControl herauslaufen.

    o815michi schrieb:

    Stimmt, Soweit sogut. Das Programm soll das aber in einer Datei Speichern. Übersichtlich. Dazu gibt es einen ausfühlichen Boolean Array.
    Dieser ist in Verschachtelten Structuren untergebracht wo dann noch andere Daten wie das Datum dazukommen.

    Das ist Dein Grundproblem: Du wirfst Objekte <-> Darstellung <-> Speicherung in einen Hut und verstösst - wie viele hier - gegen eine der elementarsten Regeln nicht nur des OOD sondern der Programmierung überhaupt.
    Dazu kommt der Verstoss gegen eine andere Regel: benutze sprechende Namen !
    So etwas nennt man SpaghettiCode -> unübersichtlich, schwer zu lesen, noch schwerer zu warten und unmöglich zu erweitern.

    Sorry wenn ich Dir auf den Fuss trete, ich weiss Du gibst Dir Mühe , ansonsten würde ich mir garnicht die Mühe machen zu diskutieren. Aber Dein Code ist noch stark an VB6 angelegt und hat niochts mit .NET zu tun.
    Ich sehe hier Arrays/Stukturen/boole'sche Arrays etc: das sind Elemente die in .NET eher sehr selten auftreten, in .NET sind es vernünftige Klassen + Vererbung.

    Nehmen wir uns mal ein Beispiel vor ( Bild zur Veranschaulichung s.u.):

    ObjektDesign:
    LottoFeld: Basisklasse Menge (=List) von 6 Zahlen : Methoden: New
    Lottofelder: Menge von Lottofeldern Methoden: New, Add(Lottofeld), Remove(Lottofeld)
    Lottoschein : Lottofeld + Zusatzdaten Methoden: New, Properties: Spiel77, Super6, Glücksspirale, Datum, Owner, ....
    Die Implementierung reicht vollkommen aus um mit Deinen Objekten intern 'rechnen' zu können.

    Präsentation:
    Überlege Dir wie/wo Du darstellen möchtest und lege Dir (Helper-)Methoden/Controls an, entweder innerhalb oder ausserhalb der Klasse an die dieses unterstützen:
    LottoFeld: Methode: Show() + eigenes UserControl: Lottofeld
    Lottofelder: Methode: Show() + UserControl Lottofelder ( benutzt Usercontrol Lottofeld)
    Lottoschein : Methode: Show() + Usercontrol Lottoschein (benutzt Usercontrol Lottofelder)

    Das Gleiche analog für die Speicherung , in Deinem Fall zum Beispiel als XML-Datei (->überichtlich, editierbar) oder Datenbank (-> queries).

    Keine Ahnung ob Dir das hilft, ich mache hier erst einmal Schluss.
    Bilder
    • lottoschein.png

      25,51 kB, 465×331, 215 mal angesehen

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Kangaroo“ ()

    Hallo,

    ist ja schön, das du mal sagst was du denkst. Aber ich muss das etwas kommentieren. .. Und es ist leider nicht kurz und bündig geworden.
    Aber vielleicht versteht ja Jemand meine Hauptfrage/Problem: Warum soll OOP bei mir Sinn machen?

    Aber Dein Code ist noch stark an VB6 angelegt und hat niochts mit .NET zu tun.


    Interessant, ich habe fast nie in VB6 programiert. AmigaBasic->QBasic->VB5->VB 2008
    Also denke ich in AmigaBasic Strukturen.

    nämlich die Referenz auf das eigentliche Label selber

    Noch einmal, ist das Dir klar ??


    Natürlich ist mir das klar. Beispiel ich habe 1000 Kisten, die die Labels darstellen.
    Ich möchte die Farbe vom Inhalt einer Kiste ändern. Jemand bringt mir den Teddybären aus einer Kiste.
    Ich kann die Eigenschaften vom Tedy ändern, Farbe, Größe, Augenzahl etc. dann bringt er ihn wieder zurück.
    Ich weis aber nicht welche Kiste es war. Wenn jemand mal nicht da ist muss ich suchen. Oder mir überall draufschreiben wo was drin ist, bzw auf den Teddy 785 schreiben...
    Gut, der Teddy wäre der Wert selbst und nicht nur ne Referenz, aber so kleinlich möchte ich an dieser Stelle nicht sein.

    Dazu kommt der Verstoss gegen eine andere Regel: benutze sprechende Namen !


    Ich kenne diese Regel. Das heist nicht, das ich sie gut finde.
    1. CommandButtonBeenden ist viel länger als CB0.
    2. Nur ich weis in meinen Programmen ist CB0 immer Beenden (wenn es CB0 gibt)
    3. umso länger die Namen umso unleserlicher der Code.

    oder ist das gut leserlich
    Die abkürzungen Stehen immer für Wörter, die ich in der Definition komentiere.

    VB.NET-Quellcode

    1. DL(1).Tip(HS1.Value).LZ(I).Markiert = Not DL(1).Tip(HS1.Value).LZ(I).Markiert[


    Nach solchen regeln würde da stehen:

    VB.NET-Quellcode

    1. DatenFürLotto(1).Tip(AuswahlTip.Value).Lottozahlarray(I).markiert= not(DatenFürLotto(1).Tip(AuswahlTip.Value).Lottozahlarray(I).markiert)


    Da sieht man doch den Wald vor lauter Bäumen nicht. Das wichtige in dieser Zeile, ist doch das NOT das ich den Wert durch Negierung bei jedem Aufruf verändere. Nicht wo genau der Wert gespeichert ist.

    VB.NET-Quellcode

    1. Du wirfst Objekte <-> Darstellung <-> Speicherung in einen Hut und verstösst - wie viele hier - gegen eine der elementarsten Regeln nicht nur des OOD sondern der Programmierung überhaupt.


    Ich muss doch am Ort des entstehens, den Wert Speichern. Im nachhinein alles Abzufragen, wie der Zustand ist, ist doch Zeitaufwendig und man hat oft nicht alle Daten, weil sie ja nicht zwischengespeichert werden, die relevant für die Auswahl der wichtigen Daten sind.
    Ich möchte doch anhand der Daten nachvollziehen, was der Nutzer macht. Keine minutenlange Datensuche um zu speichern, wenn der Nutzer das Programm beenden möchte.

    VB.NET-Quellcode

    1. LottoFeld: Basisklasse Menge (=List) von 6 Zahlen : Methoden: New


    Das funtioniert nicht so einfach.
    Bei den Gezogenen Zahlen sind es Ja 7 Zahlen. (Zusatzzahl)
    Außerdem soll das ganze genau so auch für Systemscheine funktionieren (wo man bis zu 15 Zahlen ankreuzen kann)

    Das Gleiche analog für die Speicherung , in Deinem Fall zum Beispiel als XML-Datei (->überichtlich, editierbar) oder Datenbank (-> queries).

    Das möchte ich gar nicht. Ich möche, das es Digital gespeichert wird, Platzsparen und nicht für einen Texteditor lesbar.
    Das könnten ja ziemlich viele Daten werden. Wobei hier eine Access-Datenbank günstig wäre. Allerdings habe ich mich damit noch nicht beschäftigt und deshalb lasse ich das erstmal lieber.
    Jede Woche ein Schein voll plus die gezogene Zahlen plus die ganzen Auswertedaten, die teilweise ein Vielfaches der Daten aus den reinen Tipps betragen können. Das sollte mölichst alles in einer Datei sein, damit man auch die Tipps, die man vor 50 Jahren abgegeben hat auch mit den gezogenen Zahlen von heute vergleichen kann etc.

    VB.NET-Quellcode

    1. So etwas nennt man SpaghettiCode -> unübersichtlich, schwer zu lesen, noch schwerer zu warten und unmöglich zu erweitern.


    Kann durchaus sein. Ich schreibe Code für mich. Ich "warte" und erweitere ihn quasie allein.
    Es ist durchaus möglich, das ich erstmal schauen muss oder darüber nachdenken, wie ich das mal vor Jahren bei einem alten Programm gemacht habe, aber es war bisher immer möglich wenn es nicht um "obkure" Dotnet Technologien ging.

    VB.NET-Quellcode

    1. .NET sind es vernünftige Klassen + Vererbung


    So, das weis ich. Ich weis auch wie man sowas erstellt. Ich weis nur nicht wo der große Vorteil ist, der die Kompliziertheit wieder ausgleicht.
    Das genannte Beispiel ist in einer Klasse.

    Ich habe angefangen mit dem Programm als ich noch der Meinung war, man kann keine Steuerelemente-Felder mehr machen.
    Also hab ich eine Klasse (Zahl) gemacht, in diese habe ich das Label importiert. Dann habe ich einen Array von der klasse gemacht wo ich dann über eine 2.Klasse (Feld) drauf zugegriffen habe. Das war Doof, weil ich jede einzele Eigenschaft des Labels durchleifen musste auf die Feld Klasse um darauf zugreifen zu können. Immer mit irgendwelchen Problemen.
    Zuletzt habe ich dann die Klasse nochmel gebraucht um ein Zahlenfeld auf dem 2. Formular zu machen, dann ging die auf dem ersten plötzlich nicht mehr. etc.
    Dann habe ich versucht die moderen Möglichkeiten zur Datensicherung bei VB zu nutzen in dem ich verschiedene Listentypen ausprobiert habe. Ich glaube die List-Klasse war da die geeignetste. Ich brauche also eine Liste von min. 6 Zahlen (bis 15) in einer Liste von 10 Tipps (pro Schein) in einer Liste von mehreren Scheinen. Da höhrt VB auf zu Denken. Egal wie unterschiedlich die Eingegeben Zahlen waren. in den 3 Testlisten (Pro Schein) waren immer die gleichen Zahlen.

    "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt"
    ist inzwischer einer meiner "Lieblingsmeldungen".

    Vererbung:
    Mir sind Instanzen sowas von Egal. Ich brauche sie fast nie. Wofür auch. Wenn ich ein Object haben möchte, was genauso ist (oder ähnlich) wie das Ursprungsobject, dann gibt es Copy und Past. Schwupps in eine neue Klasse den Code und schon gibts ein neues Object was ich nach belieben bearbeiten kann, ohne mir sorgen zu machen mein Ursprungsobject zu verhunzen.

    Und was ich mir immer Vorstellle, das man die Klasse 3 mal vererbt hat und dann immer irgendwas Verändert, wer weis dann noch wie die Klasse Dynamisch zur Laufzeit aussieht. Da braucht man doch eine Liste, in welcher Version sie welche Eigenschaften und Methoden hat und welche nicht. Und wo die Überall definiert sind. Da ist Fehlersuche bestimmt recht einfach.

    Warum ist dann Vererbung besser als Copy und Paste. (nicht vergessen Kleine Programme, Wenige Abwandlungen und nur ich bearbeite)

    Kappselung:
    Das ist ein Schwere Thema. ich möchte am liebsten von überall auf meine Daten zugreifen. gebe ich in der Form einen Wert ein, schwups Speichert er ihn im Array, dann rufe ich ne Klasse auf, die nimmt die Daten aus dem Array rechnet und rechnet und Speichert es wieder im Array. Klicke ich dann auf dem Formular den richtigen Knopf, öffnet sich ein 2 Formular und gibt die Daten aus dem Array aus.
    Gut, das Beispiel ist so einfach, das man alles in eine Klasse auslagern könnte. Aber bei mehr Daten, schicke ich Daten ständig zur Klasse, die sie auch nur (Zwischen)speichert um, sie dann sowieso irgendwann zu verarbeiten. Da ist Rechenaufwand.


    Warum soll ich in alles (Klasse) Formularen eine Referenz auf die Kasseninstanzen erstellen. ich brauche doch meist nur die eine. Mehrere machen immer Schwierigkeiten. z.B. das sie sinnlos Speicherplatz belegen.
    Ich habe einige (Anfänger) Bücher über dotnet gelesen, jeder hat erklärt wies geht, aber warum das Sinn macht gegenüber der alten Vorgehensweise, das hat keiner.

    verstösst - wie viele hier - gegen eine der elementarsten Regeln nicht nur des OOD sondern der Programmierung überhaupt.

    Gibt es hier irgendwo die Liste. Wenn sowas gesagt wird möchte ich sie auch sehen. Auch wenn ich sie dann nicht befolge.

    Ich könnte auch noch weitere Negativbeispiele aufzählen, aber das bringt mich nicht weiter. ca. 3 Jahre habe ich an einer OOP Umsetzung dieses Programmes gearbeitet, und in jeder Hinsicht Schwierigkeiten. Nur ohne OOP (oder mit möglichst wenig) ist eine Umsetzung für mich Verständlich und übersichtlich möglich. aber vieleicht konmt hier noch etwas Sinnvolles raus. Ich
    ...
    So zu deiner Anwort.

    Und was bitte sehr ist ein ListView anderes als genau das ?


    Ich habe ein Bild vom Listview angehängt, siest du das eine Ansehenoption, die an einen Lottoschein erinnert?
    Dann ein DataGridview hat zwar ein ähnliche Darstellung, vielleicht, den Kopf weg und die Zellen in Hintergundfarde, dann könnte es gehen. Vielleicht geht auch die Listview-variante, da muss ich aber erstmal nachlesen und probieren. Aber nicht vor der Version 1. Erstmal muss es laufen. Die Haupt-Analysefunktionen sind ja noch gar nicht implementiert. Das ist ja alles nur die Oberfläche. Das macht mir momentan die meisten sorgen. Die anderen Standart-Komponenten habe ich alle in anderen Projekten ausprobiert. Mit möglichst wenig OOP.

    Ich möchte jetzt nicht, als dotnet-Nichtmöger dastehen. VB2008 hat viele Vorteile gegenüber VB5, allerdings ist OOP etwas an mir vorbeigegangen.

    Fazit:

    Was sind die Vorteile von OOP gegenüber der modularen Programmierung, oder was kann ich damit machen, was mir mehr nützt als der Mehraufwand zur Erstellung es rechtfertigt.
    Ich erstelle keine DLLs, ich recycle keine Code auf diese Weise, kleine Projecte, wenig wiederverwertung innenhalb der Projecte, nur eigene Projecte
    Und ich halte mich prinziepiel nur an Gesetze. Ein Gesetz der programierung ist vor jedem Kommentar ein ' oder REM sonst gehts nicht. Die Freiheit meine Steuerelemente durchzunummerrieren etc. nehme ich mir. Sonst suche ich mich ja tot.

    Ich hoffe diese lange Odyssee liest irgendwer. Achja ich habe keine Lust zu jeder Aussage, Beispiele aus meinen Projekten rauszusuchen.
    Ich weis auch das das Anfängerfragen sind. Aber ich habe nicht mit einer Grundsatzdiskussion angefangen.


    p.s. Futurama lives
    Bilder
    • DataGrid.jpg

      31,71 kB, 700×463, 180 mal angesehen
    • Listview.jpg

      38,06 kB, 660×318, 200 mal angesehen

    o815michi schrieb:

    Aber ich habe nicht mit einer Grundsatzdiskussion angefangen.

    Nun, man kann auch mit dem Kopf einen Nagel einschlagen: wenn es einen nicht schmerzt, so ist das bestimmt billiger als sich einen Hammer zu kaufen.

    Ich habe Dir nur Empfehlungen gegeben, ob Du sie nun annimmst oder nicht ist Deine eigene Entscheidung - und mir auch relativ gleichgültig

    P.S: welches Control könnte das wohl sein
    Bilder
    • Rätsel.png

      2,68 kB, 190×127, 817 mal angesehen

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Kangaroo“ ()

    Hallo,

    Nun, man kann auch mit dem Kopf einen Nagel einschlagen


    Ich sehe das eher so, ich nutze den normalen, altbewährten Hammer (mit einigen Verbesserungen) mit den man auch Steine zerteilen und mal auf Ziegel klopfen kann, als den Super-Modernen vom Baumarkt, der bei etwas anderem als Nägeln kaputtgeht.

    Ich danke dir für deine Mühe, aber wenn du ein Mensch aus der Programmierpraxis bist, warum beantwortest du dann nicht meine Frage.
    Achja, ich werde meine Frage mal noch auf einem anderen Portal posten, vielleicht kommt da ja was nützliches heraus.
    Wiki konnte meine Frage erstmal beantworten. Deshalb erstrecht OOP auf ein Minimum reduzieren.

    Ansonsten, dein Bild entspricht nicht meinen Vorstellungen: ListView.; Für die Symboldarstellung brauche ich Bilder, die muss ich Zeichnen. Wenn ich sie zeichne, kann ich auch gleich ein ganzes Bild machen und das in eine Pic-Box laden. Über die Click-Koordinaten bekomme ich dann auch die geclickte-Nr. raus. Aber erst nach Version 1.0 werde ich mir darüber gedanken machen. Ich halte mich schon viel zu lange an den Notwendigkeiten und nicht am Zweck des Programmes auf.

    Grüße