Laden...

Profil von Regenfreund

myCSharp.de - Member Mitglied seit
R
Regenfreund
myCSharp.de - Member
1
Themen
9
Beiträge
Dabei seit
29.10.2007
Letzte Aktivität
vor 17 Jahren
Erstellt vor 17 Jahren

Ich muss schon etwas länger nachdenken, bin nämlich Jahrgang 1964:

  1. In der Schule im damals freiwilligen und total innovativen Informatikunterricht auf einem Triumph-Adler-PC unter CP/M in Basic erste Progrämmchen geschrieben. Um meine erste 5,25"-Floppy zu kaufen, bin ich extra nach Köln gefahren. Hat fast zehn Mark gekostet.
  2. Irgendwann Anfang der 80er war in Köln eine Computermesse, wo ich das erste Mal einen Mac mit Maus (!) gesehen habe. Es war eine Offenbarung.
  3. Gleichzeitig hatte ich einen Sharp MZ-80-K. War ein Z80-Rechner mit Kassettenlaufwerk. Ich habe BASIC und Assembler programmiert. Eine meiner liebsten Anwendungen war ein Programm, um beim Bundesliga hören im Radio eine Live-Tabelle zu erstellen. Programmname war im besten CamelCase: BuLiTa
  4. Dann hatte ich einen Amiga 1000.
  5. Dann die üblichen PCs.
    6 Programmiert habe ich zu Studienzeiten unter DOS mit Microsoft-Compilern in C. Zu der Zeit kannte man noch die Adressbelegung und IRQs auswendig. Ich hatte ein paar Kopien aus der Zeitschrift "mc" als Quick-Reference immer dabei.
  6. Damals konnte man noch PC-Einsteckkarten selber bauen!
  7. Später dann mit Turbo-Pascal und der Bibliothek Object Professional. War echt leistungsfähig. Datenbank der Wahl war bei mir damals dBase.
  8. Erste Windows-Programmierversuche irgendwann Anfang der 90er. Zunächst mit Turbo-Pascal für Windows. War ein Flop. Dann Visual-C in der Version 1.0 usw.
  9. Und dann die üblichen Geschichten für irgendwelche industrielle Hardware, meistens in C.

Alles in allem waren es herrliche Zeiten. Früher war wahrscheinlich alles besser, schließlich waren ja auch die Brötchen dicker und die Winter schneereicher.

Heute programmiere ich nur noch als Hobby und wenn ich sehe, was die IDEs heute so bieten, freue ich mich richtig.
Aber jetzt höre ich auf, bevor mir noch vor lauter Wehmut die Tränen kommen.

Bis dann

Regenfreund

Erstellt vor 17 Jahren

Ich traue mich mal, hier mitzureden.

Ich habe eine Anwendung mit Stoppuhr-Funktion erstellt, um bei Einzelzeitfahren den versetzten Start der Fahrer und die Zeitnahme abzuwickeln. Dabei erzeuge ich auch die bekannten Sekundenpiepser in den letzten fünf Sekunden vor dem Start und bei Erreichen der Startzeit den langen Piepser. Die Zeitüberwachung übernimmt ein selbstgebasteltes Control, das im Sekundentakt einen Event auslöst. Der Eventhandler startet dann über ein wenig Überwachungslogik einen Thread zum Piepsen.

Warum ein Thread? Weil sonst für die Dauer des Piepsens die Stoppuhren "stehen". Soll heißen, die Anzeige stolpert.

Long story short: das ist sekundengenau (oder allgemeiner genau zum gewünschten Zeitpunkt) im Rahmen der Idle-Timer-Auflösung und es piepst optisch und akustisch immer genau zur Sekunde. Und eigentlich recht simpel.

Also ich denke, ein Thread würd's tun. Bleibt die Frage, wie man dein "Laden aus einer Textdatei" vorab erledigen kann. Aber wenn du damit zum gewünschten Zeitpunkt der MP3-Sirene erst anfängst, wird die Sirene wohl zwangsläufig ein wenig hinterherhinken.

Regenfreund

Erstellt vor 17 Jahren

Irgendeins deiner Objekte, die du dort verwendest ist nicht per new erzeugt. Ich tippe mal auf dein rtbDoc, was immer es auch ist.

Die Fehlermeldung ist an dieser Stelle eigentlich ziemlich eindeutig.


rtbDoc = new WasAuchimmer;

Regenfreund

Erstellt vor 17 Jahren

Wer von euch hat sich mal die Mühe gemacht, den ganzen Thread zu lesen? Vermutlich keiner.
Ich fasse mal zusammen:

  1. Ein User stellt die Frage, wie man zwei Integer-Werte vergleicht. Diese liest er aus einer Datenquelle, wandelt sie in Strings und wieder zurück und weiß dann nicht weiter.
  2. Auf seine Frage kriegt er eine hier oft zu findende Antwort, die mich gelegentlich auch nicht glücklich macht, in diesem Fall aber leider die einzig richtige ist.
  3. Er regt sich auf und es entbrennt eine Grundsatzdiskussion, die am Ende teilweise auf das Niveau der üblichen Glaubenskriege (Windows-Linux, VB-C#, TMobile-Vodafone, links-rechts, oben-unten, ...) landet.
  4. Der User sagt tschüß und dass er hier nicht mehr mitspielen will.
  5. Jetzt geht's erst richtig los und wir befinden uns bei Punkt 3 sozusagen in einer Endlosschleife.
    Wer nicht weiß, was das ist, schlage bitte hier nach: 🛈

Es steht allerdings nicht so direkt drin, man muss schon ein wenig nachdenken... 😁

Ich habe jetzt eigentlich nur eine Anfängerfrage: wer schließt diesen Thread, beendet damit die Diskussion und ermöglicht den Beteiligten sich um die wichtigen Dinge des Lebens zu kümmern?

Grüße

Regenfreund

Erstellt vor 17 Jahren

Nein, Umstände macht es keine, wenn man davon absieht, dass ich zur Zeit nicht daheim bin und der Zugriff auf die Sources daher etwas umständlich ist.

Ich habe mal per normalem Editor den interessanten Teil aus der vom Designer erzeugten Datei rausgezogen.

Ich habe genau drei Elemente:

  1. Das Label mit der Spring=True-Eigenschaft,
  2. das Label, das auf dem Bild "Autostart aktiv" anzeigt und
  3. den Progressbar, der so ne Art Lebensanzeige darstellt.

Und ich wollte natürlich auch, dass die am rechten Rand ist.

Mehr kann ich momentan nicht bieten.

Regenfreund


          // 
          // toolStripContainer1
          // 
          // 
          // toolStripContainer1.BottomToolStripPanel
          // 
          this.toolStripContainer1.BottomToolStripPanel.Controls.Add(this.statusStrip1);
          // 
          // toolStripContainer1.ContentPanel
          // 
          this.toolStripContainer1.ContentPanel.Controls.Add(this.approacherDisplay);
          resources.ApplyResources(this.toolStripContainer1.ContentPanel, "toolStripContainer1.ContentPanel");
          resources.ApplyResources(this.toolStripContainer1, "toolStripContainer1");
          this.toolStripContainer1.LeftToolStripPanelVisible = false;
          this.toolStripContainer1.Name = "toolStripContainer1";
          this.toolStripContainer1.RightToolStripPanelVisible = false;
          this.toolStripContainer1.TopToolStripPanelVisible = false;
          // 
          // statusStrip1
          // 
          resources.ApplyResources(this.statusStrip1, "statusStrip1");
          this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.toolStrip_MainLabel,
            this.tSSL_AutoRennen,
            this.toolStripProgressBar1});
          this.statusStrip1.Name = "statusStrip1";
          this.statusStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.ManagerRenderMode;
          this.statusStrip1.SizingGrip = false;
          // 
          // toolStrip_MainLabel
          // 
          this.toolStrip_MainLabel.Name = "toolStrip_MainLabel";
          resources.ApplyResources(this.toolStrip_MainLabel, "toolStrip_MainLabel");
          this.toolStrip_MainLabel.Spring = true;
          // 
          // tSSL_AutoRennen
          // 
          this.tSSL_AutoRennen.ActiveLinkColor = System.Drawing.Color.Red;
          this.tSSL_AutoRennen.BackColor = System.Drawing.Color.Red;
          this.tSSL_AutoRennen.BorderStyle = System.Windows.Forms.Border3DStyle.Raised;
          this.tSSL_AutoRennen.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
          resources.ApplyResources(this.tSSL_AutoRennen, "tSSL_AutoRennen");
          this.tSSL_AutoRennen.ForeColor = System.Drawing.Color.Black;
          this.tSSL_AutoRennen.Name = "tSSL_AutoRennen";
          // 
          // toolStripProgressBar1
          // 
          this.toolStripProgressBar1.Margin = new System.Windows.Forms.'adding(2);
          this.toolStripProgressBar1.MarqueeAnimationSpeed = 75;
          this.toolStripProgressBar1.Name = "toolStripProgressBar1";
          this.toolStripProgressBar1.Padding = new System.Windows.Forms.Padding(1);
          resources.ApplyResources(this.toolStripProgressBar1, "toolStripProgressBar1");
          this.toolStripProgressBar1.Step = 1;
          this.toolStripProgressBar1.Style = System.Windows.Forms.ProgressBarStyle.Marquee;
          this.toolStripProgressBar1.Value = 50;


Erstellt vor 17 Jahren

Also ich habe genau das was du suchst gemacht und das ging ohne Probleme. Meinst du es in etwa so?

Wenn ja, poste ich mal den Code.

Regenfreund

Erstellt vor 18 Jahren

Sorry Leute, aber ich muss es nochmal ausgraben. Ich habe jetzt eigentlich (fast) das gewünschte Verhalten hingebracht. Eine selektierte Zeile bleibt selektiert, auch wenn eine neue angefügt wird. Allerdings springt die Selektion einmal kurz auf die neue und wird dann von mir wieder rückgesetzt.

Hat denn niemand eine Idee, wie ich das verhindern kann, dass bei AddNew die hinzugefügte Zeile automatisch selektiert ist.

Danke

Regenfreund

Erstellt vor 18 Jahren

So, ich kann Entwarnung geben. Alle meine Versuche hatten sich immer um SelectionChanged gedreht. Dieser Event kommt allerdings zu spät. Ich habe weiter gesucht und die Events RowsAdded und RowsRemoved gefunden. Ich denke, damit bringe ich es hin.

Grüße

Regenfreund

Erstellt vor 18 Jahren

Hallo,

ich bin bisher nur als Leser aktiv gewesen und habe eigentlich immer was gefunden. Jetzt bin ich leider ein wenig hilflos...

Hier mein Problem: ich habe in meiner Anwendung mehrere Listen die über passende Bindingsources an DataGridViews gebunden sind. Hinzufügen und entfernen von Elementen klappt alles wunderbar.

Eine Viewansicht enthält eine Button-Spalte, über die ich eine wichtige Aktion auslöse. Dummerweise wird immer dann, wenn ein neues Listenelement per AddNew angehängt wird, auch diese neue Zeile selektiert. Und dann kann es passieren, dass mein wichtiger Button aus dem Blick gerät.

Ich habe bereits zahlreiche Versuche gemacht, den Event abzufangen, zu unterdrücken bzw. die vorher selektierte Zeile zu setzen. Irgendwie stelle ich mich ungeschickt an.

Ein kleiner Screenshot verdeutlich vielleicht mein Problem. Links sind die gestarteten Fahrer bei einem Einzelzeitfahren. Klickt man auf die Startnummer wird die Zeit genommen und der Fahrer wandert in die Finisherliste nach rechts.

Hat jemand eine spntane Idee, wie ich bei AddNew unterdrücken kann, dass neu selektiert wird?

Danke

Regenfreund