Progressbar und bestimmten bereich im MSHFlexGrid

  • VB6

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von SystemUnknow.

    Progressbar und bestimmten bereich im MSHFlexGrid

    Hallo,
    ich lade mit dem Code (s. Auszug unten) viele Werte in eine FlexGrid und lasse sie am Schluss alle darstellen.
    Jetzt möchte ich gerne zwei TextBoxen einrichten, die eine Eingabe eines Datums ermöglichen, so dass nur dieser Bereich in dem Grid angezeigt wird.
    Ich habe das Datum auch im Array. Man könnte ja in der for - Schleife die TextBox einbauen, aber da kann ich ja dann nur Werte (die Zeilen) angeben, und nicht das Datum.
    Könnt ihr mir da weiterhelfen?

    Außerdem versuche ich gerade noch eine Progressbar zu erstellen die beim Füllen des Grids den Fortschritt anzeigt. Das bekomm ich irgendwie auch nicht hin.

    Spoiler anzeigen

    Quellcode

    1. With FormTab_E33.FGrid1
    2. .Clear
    3. .Cols = 18
    4. .Rows = UBound(Tabelle) + 2
    5. .FixedRows = 1
    6. .FixedCols = 2
    7. .ColWidth(0) = 1050
    8. .ColWidth(1) = 900
    9. 'Legt die Spaltenbreite fest
    10. For n = 2 To FormTab_E33.FGrid1.Cols - 1
    11. FormTab_E33.FGrid1.ColWidth(n) = 750
    12. Next n
    13. .TextArray(0) = "Datum"
    14. .TextArray(1) = "Uhrzeit"
    15. .TextArray(2) = "P~ 134m"
    16. .TextArray(3) = "P-- 134m"
    17. .TextArray(4) = "P+ 134m"
    18. Zeile = 1
    19. For i = 0 To UBound(Tabelle)
    20. '''''''''''Leistung 134m, E33 durchnittlich''''''''''''''''''''
    21. If Tabelle(i).v134d <= 2 Or Tabelle(i).v134d >= 28 Then
    22. Leistung134d = 0
    23. ElseIf Tabelle(i).v134d > 2 And Tabelle(i).v134d < 13 Then
    24. Leistung134d = Round(((101325 / (287.058 * (273.15 + Tabelle(i).Tempd))) / 1.225) * 0.0036568627 * (Tabelle(i).v134d) ^ 6 - 0.16184351 * (Tabelle(i).v134d) ^ 5 + 2.7599208 * (Tabelle(i).v134d) ^ 4 - 23.328312 * (Tabelle(i).v134d) ^ 3 + 108.05321 * (Tabelle(i).v134d) ^ 2 - 253.48439 * (Tabelle(i).v134d) + 235.95231, 1)
    25. ElseIf Tabelle(i).v134d >= 13 And Tabelle(i).v134d < 28 Then
    26. Leistung134d = 335
    27. End If
    28. '''''''''''Leistung 134m, E33 minimal''''''''''''''''''''
    29. If Tabelle(i).v134min <= 2 Or Tabelle(i).v134min >= 28 Then
    30. Leistung134min = 0
    31. ElseIf Tabelle(i).v134min > 2 And Tabelle(i).v134min < 13 Then
    32. Leistung134min = Round(((101325 / (287.058 * (273.15 + Tabelle(i).Tempd))) / 1.225) * 0.0036568627 * (Tabelle(i).v134min) ^ 6 - 0.16184351 * (Tabelle(i).v134min) ^ 5 + 2.7599208 * (Tabelle(i).v134min) ^ 4 - 23.328312 * (Tabelle(i).v134min) ^ 3 + 108.05321 * (Tabelle(i).v134min) ^ 2 - 253.48439 * (Tabelle(i).v134min) + 235.95231, 1)
    33. ElseIf Tabelle(i).v134min >= 13 And Tabelle(i).v134min < 28 Then
    34. Leistung134min = 335
    35. End If
    36. '''''''''''Leistung 134m, E33 maximal''''''''''''''''''''
    37. If Tabelle(i).v134max <= 2 Or Tabelle(i).v134max >= 28 Then
    38. Leistung134max = 0
    39. ElseIf Tabelle(i).v134max > 2 And Tabelle(i).v134max < 13 Then
    40. Leistung134max = Round(((101325 / (287.058 * (273.15 + Tabelle(i).Tempd))) / 1.225) * 0.0036568627 * (Tabelle(i).v134max) ^ 6 - 0.16184351 * (Tabelle(i).v134max) ^ 5 + 2.7599208 * (Tabelle(i).v134max) ^ 4 - 23.328312 * (Tabelle(i).v134max) ^ 3 + 108.05321 * (Tabelle(i).v134max) ^ 2 - 253.48439 * (Tabelle(i).v134max) + 235.95231, 1)
    41. ElseIf Tabelle(i).v134max >= 13 And Tabelle(i).v134max < 28 Then
    42. Leistung134max = 335
    43. End If
    44. .TextMatrix(Zeile, 0) = Tabelle(i).Datum
    45. .TextMatrix(Zeile, 1) = Tabelle(i).Uhr
    46. .TextMatrix(Zeile, 2) = Format(Leistung134d, "#,##0.0")
    47. .TextMatrix(Zeile, 3) = Format(Leistung134min, "#,##0.0")
    48. .TextMatrix(Zeile, 4) = Format(Leistung134max, "#,##0.0")
    49. Zeile = Zeile + 1
    50. Next
    51. End With 'Ende FGrid1(E33)
    52. FormTab_E33.Show (0)


    Hier noch ein Screenshot:
    bilder-hochladen.net/files/hgk3-5-jpg.html

    Dabke Euch schonmal,
    Gruß Martin.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Maig“ ()

    einfach in MSFlexGrid nach gewünschte Datum suchen:
    (code nicht getestet)

    Visual Basic-Quellcode

    1. Dim z As Double
    2. MSFlexGrid.Col = 0 ' suchen in erste zeile
    3. For z = 1 to MSFlexGridRows - 1
    4. MSFlexGrid = Row =z
    5. If If MSFlexGrid.TextMatrix (z,0) = TextBox.Text Then
    6. 'wenn Eingabe in TextBox gleich mit Inhalt der Zelle aus MSFlexGrid
    7. 'dann tue was...
    8. 'deine Code
    9. End If


    kannst deine gefundene Einträge in Listbox, CombBox oder etc ausgeben.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SystemUnknow“ ()

    Ok danke, werd das mal versuchen.

    Aber ganz versteh ich jetzt noch nicht wie ich da weiter machen soll. Ich finde also den 1. Eintrag (neuer Anfang der Tabelle), will aber dann noch einen 2. Eintrag mit einer 2. TextBox (neues Ende der Tabelle) finden und die Tabelle neu (kurzer) anzeigen lassen.

    Gruß Martin
    Ich habe jetzt nicht verstanden was du damit meinst:

    Ich finde also den 1. Eintrag (neuer Anfang der Tabelle), will aber dann noch einen 2. Eintrag mit einer 2. TextBox (neues Ende der Tabelle) finden und die Tabelle neu (kurzer) anzeigen lassen.

    erkläre bitte etwas deutlicher !



    Du kannst deine "Suche" gestalten wie du willst.
    Ich würde zu sicherheit beim laden der Anwendung zuerst die Daten in MSFlexGrid sortieren, z.b nach Datum:
    freevbcode.com/ShowCode.asp?ID=5703&NoBox=True
    Hai !
    Sorry ich blicke in deine Code nicht durch !
    Habe ein kleines Beispiel gebastelt, da wird gezeigt wie man Datums von/bis in MSFlexGrid aufliestet.

    EDIT:
    Solche Datenmengen in Anwendung laden, würde ich dir raten Threads zu verwenden, schau dir API Funktion CreateThread an:
    msdn.microsoft.com/en-us/library/ms682453%28v=vs.85%29.aspx
    damit deine Anwendung beim laden und berechnen nicht hängen bleibt.
    Dateien
    • Beispiel.zip

      (3,03 kB, 143 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „SystemUnknow“ ()

    Danke!
    Habs mit deinem Beispiel hinbekommen.
    Aber du hast recht, bei langen Files kommt kuz "keine Rückmeldung".
    Vor allem bei falscher Eingabe vom Datum.

    Muss ich mir mal ansehen deinen Link. Beim drüberfliegen hat mir das jetzt nichts gesagt;)

    Gruß Martin
    Die Eingabe muß nicht unbedingt in TextBoxen erfolgen, am einfachsten wenn du mit ComboBoxen machst.
    In beide ComboBoxen lädst aus CSV Datei alle Datums, dann kannst per Auswahl von/bis Einträge anzeigen.
    Sparst dir zig abfragen von richtigkeit der eingabe usw.....

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „SystemUnknow“ ()

    Hi,
    ich hab jetzt nochmal was anderes versucht um einen bestimmten Bereich zu zeigen. Deine Methode hat zwar auch funktioniert, hat aber bei großen Zeitintervallen recht lange gedauert.
    Allerdings hab ich bei meiner Version auch noch ein Problem, bei dem du mir vielleicht nochmal einen Tipp geben kannst.

    Ich habs jetzt mal so gelöst:

    Spoiler anzeigen

    Quellcode

    1. If Tabelle(i).Datum < CDate(Text1.Text) Then
    2. Goto LoopEnd
    3. ElseIf Tabelle(i).Datum > CDate(Text2.Text) Then
    4. Exit For
    5. End If


    Jetzt weiß ich aber nicht wie ich die Anzahl der .Rows definieren soll. Bei Ubound hab ich ja noch jede Menge leere Zeilen wenn ich einen Bestimmten Zeitbereich eingebe.
    Gibts da beim MSHFlexGrid keine Möglichkeit so viele Rows zu erzeugen wie Einträge?
    Oder kann man den Wert ermitteln wann "Exit For" statt findet?

    Gruß Martin
    Gibts da beim MSHFlexGrid keine Möglichkeit so viele Rows zu erzeugen wie Einträge?

    Wir haben schon darüber gesprochen, deine CSV Datei mit 64000 oter etc war kein problem zu öfnen.





    Jetzt weiß ich aber nicht wie ich die Anzahl der .Rows definieren soll. Bei Ubound hab ich ja noch jede Menge leere Zeilen wenn ich einen Bestimmten Zeitbereich eingebe.


    Ich habe dir doch tipp schon gegeben gehabt, verwende einfach Dynamische kontrols.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „SystemUnknow“ ()