| |
VB.NET - Ein- und Umsteigernach Event zum nächsten Label | | | Autor: Erwin1 | Datum: 24.12.17 11:51 |
| Hallo,
erst mal Frohe Weihnachten.
Ich hänge mal wieder fest und habe keine Idee mehr, wie ich es umsetzen kann.
Zur Erklärung: Ich habe mir eine Form erstellt, in der mehrere Label enthalten sind, die ich für die Anzeige eines Spielstandes nutzen möchte.
For i As Integer = 0 To 10
lbround.Add(New Label With {.Parent = Me, _
.Size = New Size(54, 39), .Location = New Point(16, _
66 + i * 1 * .Height), _
.Name = "lbround", _
.BackColor = Color.White, _
.BorderStyle = BorderStyle.FixedSingle,
.TextAlign = ContentAlignment.MiddleCenter,
.Font = New Font("Microsoft San Serif", 14, _
FontStyle.Bold)}) In dieser Art sind 5 Reihen, die erste für die Runde, die anderen für die erzielten Punkte pro Runde des jeweiligen Spielers. Über den letzten 4 Labelreihen ist jeweils ein Label für den Spielernamen. Zu Demozwecken lief das ganze, Dank Manfred X, mit einem Timer. Nun ist es mit einem Timer insofern nicht mehr realisierbar, da die Zeit pro Durchgang/Spieler verschieden ist. Ich habe einen Timer laufen, der die Form ständig aktualisiert, da jeder Spieler 3 Versuche hat und ich dies somit aktuell halte.
Nun zu meiner Frage: Wie kann ich es erreichen, das ich nach den 3 Versuchen, in Abhängigkeit, wie viele Spieler es tatsächlich sind, den Fokus auf das entsprechend nächste Label zu setzen.
ReadProcessMemory(CInt(processHandle), &H624BCC, buffer, 4, 0) ' auslesen
' Rundenanzeige Es sei noch gesagt, das ich die Möglichkeit habe, per Adresse die Rundenzahl, den Zähler der Versuche und natürlich die erreichten Punkte auslesen kann.
Für den Spielernamen habe ich auch eine Adresse, aber das klappt noch nicht so ganz, obwohl sie fest ist und sich nach einem Neustart nicht ändert( nächste Baustelle ). Durch den Timer kann ich labelindex += 1 nicht verwenden, da er dann zu den nächsten Labeln rast und natürlich nicht die 3 Versuche abwartet. Habe auch schon versucht, den Timer kurz zu stoppen und wieder zu aktivieren, geht aber auch nicht, da mir der Verweis zum nächsten Label fehlt.
Danke schon in voraus für Lösungen. | |
Re: nach Event zum nächsten Label | | | Autor: sv00010 | Datum: 24.12.17 12:11 |
| Ich denke du solltest konsequent zwischen Datenerfassung und Anzeige trennen.
Du solltest dir Routinen schreiben, welche nur die benötigten Daten holen und diese in Variablen abspeichern.
Die Anzeige sollte dann nur noch den entsprechenden Wert aus der entsprechenden Variable holen und anzeigen. | |
Re: nach Event zum nächsten Label | | | Autor: Erwin1 | Datum: 24.12.17 14:05 |
| Vielen Dank für Deine Antwort.
Da ich aber noch am Anfang meiner Kenntnisse von vb.net bin, wäre es hilfreicher für mich, wenn ich da konkretere Lösungsansätze bekäme. Diese Trennung leuchtet mir ja ein, aber dessen Umsetzung??? | |
Re: nach Event zum nächsten Label | | | Autor: sv00010 | Datum: 24.12.17 15:57 |
| Erwin1 schrieb:
Zitat: | | Vielen Dank für Deine Antwort.
Da ich aber noch am Anfang meiner Kenntnisse von vb.net bin,
wäre es hilfreicher für mich, wenn ich da konkretere
Lösungsansätze bekäme. Diese Trennung leuchtet mir ja ein,
aber dessen Umsetzung??? | |
Dazu solltest du erstmal das gesamte Projekt in eine zip-Datei verpacken und ins Internet hochladen (One-Klick-Hoster oder eigene Internetseite).
Man kann nur die Struktur erkennen, wenn man sieht was gebraucht wird.
Im Prinzip solltest du eine Klasse oder ein Module erstellen, welches die Daten einliest und diese dann in einer Variable abspeichert.
Die Daten werden dann über die entsprechende Property von der Anzeige verwendet, wenn die aktualisiert wird.
z.B.
Me.Label_Rundenanzahl.Text = CStr(Module_Daten.Rundenanzahl) Die Daten sollten über einen Timer alle x Minuten bzw. Sekunden gefüllt werden, damit das was in der Anzeige angezeigt wird auch aktuell ist.
Beitrag wurde zuletzt am 24.12.17 um 16:02:06 editiert. | |
Re: nach Event zum nächsten Label | | | Autor: Franki | Datum: 26.12.17 04:19 |
| Hallo,
bevor du an die Umsetzung gehst solltest du erst mal die Anforderungen genau festlegen. Erst danach kann man etwas zur Umsetzung / Programmierung sagen.
Die Anezige über Labels anzuzeigen ist meiner Meinung nach falsch, denn die brauchen Platz, der ist begrenzt und du bist deswegen gebunden.
Da du von Rundenzeiten sprichst, nimm mal als Beispiel eine 24 Stunden Rennen auf dem Nürburgring, so viele Runden / Fahrer / Autos kannst du in Labels gar nicht darstellen. Aber die Datenerfassung aus den entsprechenden Quellen ist ja kein Proglem einfach rein in eine Datenbank und gut ist es.
Für die Anzeige kannst du dann Steuerelemente Wie ListView, TreeView oder was auch immer verwenden. Oder eigene machen die die interessantesten Daten aus der DB zum jeweiligen Abfragezeitpunkt holen. So wie bei der F1 oder Biathlon z.B.
Du solltest dein Konzept erst mal logisch / strategisch überdenken und optimieren, erst danach geht es an die Programmierung. Das ist bei solchen Sachen der eindeutig bessere Weg seine Software auch zukunftssicher zu machen, egal ob im privaten oder gewerblichen Bereich.
Gruß und guten Rutsch (mit Bestzeit) ins neue Jahr,
Frank | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats TOP! Unser Nr. 1
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere Infos
|