Laden...

Forenbeiträge von DarkProjekt Ingesamt 24 Beiträge

03.03.2014 - 10:20 Uhr

Spontan würde ich das ganze mit einer Job-Queue versuchen.

Die Gebäude melden der Queue, dass sie eine Ressource brauchen. Hat ein Arbeiter nichts mehr zu tun, nimmt er sich die nächste Aufgabe aus der Queue. Sind keine Ressourcen mehr für die Aufgabe da, landet diese wieder in der Queue.

10.12.2013 - 16:03 Uhr

Hallo herbivore,

ich habe nicht gesagt, die Init-Methode separat aufzurufen, sondern eine Methode zu schreiben und diese bei Bedarf aufzurufen, mit der man abfragen kann, ob die Initialisierung erfolgreich war. Das war es ja, was du ermitteln wolltest.

Dann bin ich (wenn wir bei der vorhanden Modellstruktur bleiben) wieder beim Ausgangsproblem. Ich kann mein Init nicht im Konstuktor der Basisklasse aufrufen, da die Controls in der abgeleiteten Form noch nicht existieren. Der nächste Schritt ist ja dann schon, die Form anzuzeigen. Statt der Prüfmethode hätte ich in der Basisform eine Property eingerichtet, die auf true gesetzt ist, wenn die Initialisierung erfolgt ist (aber das kommt ja aufs gleiche raus).

Ansonsten hast du bestätigt, was ich vermutet habe. Die Probleme mit der Initialisierung kommen nicht aus dem GUI, sondern aus dem Modell (bzw. dem DAL). Wenn du GUI und Modell trennst, kannst du die nötigen Modellobjekte erstellen und erst wenn das fehlerfrei geklappt hat das Form erzeugen

Wir haben im Grunde schon eine Trennung nach GUI und Logik. Nur werden halt die DAL bzw. die BLL Objekte aus der Form heraus referenziert und nicht aus dem Menü.
Das ist sicherlich nicht der ideale Weg, aber das zu ändern bekomme ich in unserem System nicht mehr umgesetzt 😃

10.12.2013 - 12:17 Uhr

Hallo herbivore,

Die Initialisierung des Menüs meine ich gar nicht. Das Menü erzeugt Instanzen der Form, die dann als MDI-Child angezeigt werden.

In dieser Initialisierungsphase kann eine Menge passieren. Es werden Daten geladen, an die Controls gebunden, Events abonniert etc. Das hängt dann auch immer vom jeweiligen Entwickler ab.

Möglich wäre es natürlich auch, dass ich die Init-Methode zwischen dem Konstruktor und Show() aufrufe und dann einfach ein bool zurückgeben. Allerdings bin ich dann auch dazu gezwungen, diese Methode immer selbst aufzurufen, was ich wiederum gerne verhindern würde. 😃

Das ganze ist jetzt natürlich ein bisschen Spielerei. Die Lösung von san-software funktioniert wunderbar und letztendlich könnte ich auch einen Parameter übergeben, ob die Form trotzdem angezeigt werden soll.

10.12.2013 - 10:40 Uhr

Ammer in Deiner selbstgeschriebenen Show Methode vor dem eigenlichen base.Show. Wenn die Überprüfung fehl schlägt, kannst Du das dann entsprechen behandeln, bovor es weitergeht.

Genau, das mache ich z.Zt. auch. Ich hätte die Überprüfung nur gerne in der aufrufenden (Menü)Klasse gemacht um dort die Wahl zu haben, ob ich die Form trotzdem anzeige oder nicht.

10.12.2013 - 09:59 Uhr

Vielen Dank für die sehr schnelle Antwort.

Manchmal liegt die Antwort so nah und man kommt nicht drauf. Funktioniert wunderbar.

Das einzige "Problem" hierbei ist, dass ich nicht vor dem Show()-Aufruf prüfen kann, ob das Init erfolgreich war.

10.12.2013 - 09:06 Uhr

Moin zusammen!

Ich habe folgendes Problem.

Ich habe eine Basis-Form-Klasse (Form A). Alle weiteren Forms werden von dieser Form abgeleitet.

Bisher ist es so, dass ich im Load-Event der abgeleiteten Form alle Initialisierungen (Databindings etc.) vorgenommen habe.

Nun möchte ich aber gerne noch vor dem Load-Event mitbekommen, ob alle Initialisierungen erfolgreich waren. Daher habe ich in Form A eine Methode "Init" geschaffen, die im Konstuktor von Form A aufgerufen wird.

In der abgeleiteten Form habe ich dann alle Funktion aus dem Load-Event in das neue Init-Event verschoben.

Mein Problem ist nun, dass zum Aufruf der Init-Methode noch nicht das "InitializeComponent" der abgeleiteten Form aufgerufen wurde und ich daher nicht auf die Steuerelemente zugreifen kann.

Ich habe leider keine Möglichkeit gefunden, mich dazwischenzuschalten, wenn der Konstuktur komplett erledigt ist. Habt Ihr da ne Idee zu? Danke schon mal im Voraus!

22.07.2013 - 09:12 Uhr

Happy Birthday 😃

Auf die nächste 10 Jahre 😃

07.06.2013 - 07:44 Uhr

Du könntest dir ja den Rowindex merken, wenn eine Checkbox aktiviert wird. Dann brauchst du nur diese Rows ansprechen und musst nicht alle durchgehen.

Aber der Hinweis von Herbivore hat natürlich Prio 😃

03.04.2012 - 08:20 Uhr

im Unternehmen haben Winforms-Anwendungen durchaus ihre Nachteile. Aktualisierung ist da so ein Thema. Der Firefox, der sich selbst aktualisiert, macht das nämlich auch nur, wenn der Benutzer die entsprechenden Berechtigungen hat. Die hat ein Endanwender in einem Unternehmen aber nicht. Also bleibt Firefox 3.5 noch viele Jahre Firefox 3.5, bis die IT sich für eine Softwareupdate-Lösung entscheidet.

Ist alles gar nicht so problematisch. Bei uns bekommt jeder Benutzer einen Launcher auf den Rechner installiert, der den "Home-Screen" startet. Der Launcher prüft beim Start, ob eine neue Version im Netzwerk liegt und tauscht dann ggfls. die Dateien aus. Läuft alles wunderbar 😃

18.07.2011 - 09:10 Uhr

Moin zusammen,

diese kleine Zeile kommt aus Excel.

=G6+(WENN(E7<0;E7*-1;E7*-1)+F7)
15.06.2011 - 14:55 Uhr

Vielen Dank.

Das Attribut [DebuggerStepThrough()] vor jeder verwendeten Klasse hat den gewünschten Effekt.

15.06.2011 - 13:55 Uhr

Hallo zusammen,

gibt es eine Möglichkeit, eine Klasse zu kennzeichnen, dass ich diese nicht debuggen kann?

Ich habe 2 Projekte. Projekt 2 wird in Projekt 1 als Verweis eingebunden. Ich erstelle in Projekt 1 eine Klasse aus Projekt 2 und rufe dort eine Methode auf. Ich möchte aber, dass der Inhalt der Methode nicht im debugger angezeigt wird, also dass im Grund Projekt 2 im Debugger übersprungen wird. Alle Versuche sind bisher kläglich gescheitert 😃

Danke schonmal für eure Antworten.

05.05.2011 - 11:00 Uhr

Versandsoftware und Intrastat Software benötigt z.B. das ISO-3 Kürzel.

Für die Intrastat-Meldungen wird das ISO-2 Kürzel benötigt 😉

24.09.2010 - 08:11 Uhr

Also ich finde diese Diskussion echt überflüssig. Wenn jemand sagt, er habe keine Lust, keine Zeit oder was auch immer, seine Aussage weiter zu begründen oder detallierter in ein Thema einzusteigen, dann ist das sein gutes Recht und das haben alle zu akzeptieren, ohne den jenigen zu Steinigen!

21.09.2010 - 08:13 Uhr

********** Sorry, falsch gelesen 😦 ************

07.09.2010 - 09:16 Uhr

Mal schaun was da passiert wenn ich nen Null-Value an de Textbox, etc binde

Dann bleibt die Textbox einfach leer ^^

01.09.2010 - 16:58 Uhr

aber... in der Entwurfsform war sie ja nicht sichtbar! ^^

Durch das Auswählen im Eigenschaftenfeld werden auch nicht sichtbare Controls in der Entwurfsansicht "mit markiert". So konnte ich bisher alle mir nicht sichtbaren Controls wieder entfernen.

als Hinweis für die Zukunft: Das "Ganze" unter eine Versionskontrolle stellen und dann mit "Rückgängig" die versehentliche Änderungen wieder verwerfen.

Somit würde man ggfls. viel zu viele Veränderungen rückgängig machen, je nachdem was man nach dem anlegen der Tabpage (in diesem Fall) noch alles angestellt hat 😃

01.09.2010 - 09:42 Uhr

Wenn du nach der auswahl der Tabpage im Eigenschaftenfenster noch einmal auf den Reiter der Entwurfsform klickts, dann sollte sich die Tabpage mit "entfernen" entfernen lassen 😃

01.09.2010 - 09:28 Uhr

Letztendlich ist es die selbe Property. Ob ich es jetzt im Designer oder im Code setze hängt von der persönlichen Vorliebe und dem Verwendungszweck ab z.B. wenn die Combobox im Designer noch gar nicht existiert.

Und mit ein wenig Erfahrung und etwas Eigeninitiative kann man aus der Zeile schließen, daß dieses Property wahrscheinlich auch im Designer gesetzt werden kann.

31.08.2010 - 13:26 Uhr
comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
20.08.2010 - 08:03 Uhr

Ich vermute das es am this.MDIParent liegt. Weil die geöffnete Form nicht im Parent ist

Jep. Du musst wie im Code angegeben den MdiParent für die Kundenform angeben. Du weist hier aber den MdiParent Wert der Nicht-Mdi-Form (this.MdiParent) zu, welcher logischerweise leer ist. Wenn du hier den richtigen Parent setzt sollte es gehen.

20.07.2010 - 08:13 Uhr

Derselbe Polizist kann gleichzeitig auch Punk sein, und ausserdem auch ein alter Mensch. Das führt bei dir zB. schon dazu, dass du 2 Gustavse hast, und das ist bereits der datenbänkerische GAU.

Grundsätzlich stimmt es natürlich was du sagst. Beim zitierten Punkt kommt es jedoch auf die Anforderung an. Gehe man mal davon aus, es wäre ein Spiel und Polizei steht den Punks gegenüber. Somit schließt sich aus, daß eine Person Punker und Polizist ist. Geht man dann noch davon aus, daß ein Alter Mensch kein Polizist mehr ist, und ein Baby weder Punk noch Polizist oder gar Alter Mensch ist, so haben wir wirklich nur noch eine Person in einem Knoten.

Aber es ist natürlich schon richtig, daß man die Struktur besser wie von dir angegeben aufbauen sollte.

Zu den Fragen:

  1. Sollte sicher möglich sein. Allerdings kenne ich mich da nicht so mit aus
  2. Mir fällt hier spontan ein Contextmenü beim rechtsklick über einen Knoten ein. Oder du erstellst dafür Buttons und führst die entsprechende Aktion am aktuell ausgewählten Knoten aus
  3. Du kannst dir auf der rechten Seite ein Panel erstllen und dann je nach angeklicktem Knoten ein anderes Usercontrol reinladen. Du kannst entweder im TAG des gewählten Knotens angeben, welches Usercontrol geladen werden soll oder du machst dies abhängig vom Elternknoten des gewählten Knotens.
    4)xml an treeview binden?
    Allerdings bevorzuge ich Datenbanken, da sich die Daten viel besser Strukturieren lassen.
  4. Hier ist natürlich die Frage wie die Daten vorliegen. (Ist das Alter mit im Treeview oder sind die Personen in einer Objektliste angelegt ....) Hiervon hängt ab ob und wie du an die Daten kommen kannst.
03.12.2009 - 12:59 Uhr

Wir benutzen bei uns im Unternehmen das Gid von Janus. Das lässt sich so einstellen, daß diese Filterleiste erscheint.

Bei dem normalen Grid ist mir nicht bekannt, daß es so eine Funktion gibt.