Laden...

Forenbeiträge von ChrisProg Ingesamt 174 Beiträge

08.05.2018 - 14:52 Uhr

Hallo Willfried,

das habe ich getan ( siehe Edit meines Post vom 04.05.11:18 Uhr )...

Seitdem weiss ich, das da nur Zahlen / Zeichen zeilenweise drinnen stehen; diese Zeichen sind wohl Bezeichnungen / Maße und Koordinaten...

It Imternet kann wohl nur der SW-Hersteller solche Daten wieder zu dem richtigen Bild zusammensetzen (wenn ich das richtig verstanden habe), da dieser Standard wohl einen gewissen Spielraum hat 🙁

Ich habe im Netz was dazu von Tekla gefunden, aber auch das scheint nur MIT der Tekla-SW zusammen zu funktionieren ...

MfG Christian

04.05.2018 - 11:58 Uhr

@Abt: Du hast recht, ich habe mich mit einer NC-Datei nicht beschäftigt, da ich glaubte, das die Anzeige einer Grafikdatei innerhalb eines Programms nicht so das Problem sein sollte (weit gefehlt, wie ich nun merke ...)

Die Anzeige dieser Grafik stellt leider ein Must-Have für den Kunden dar ...

Das Programm als solches hat mit CAD / Konstruktion nichts zu tun, deshalb lag mein Haupt-Augenmerk ganz wo anders ...

MfG Christian

04.05.2018 - 11:18 Uhr

@Abt: mit Sicherheit nicht !

Ich mache seit einigen Tagen nichts anders als bei Google zu suchen, aber leider finde ich dazu nichts - selbst auch der HP --> http://www.objectivity.com finde ich kaum Info´s (u. seit heute ist die Support-Seite auch down...)

bei der Dateiendung NC sieht es noch schlechter aus ...

Ich habe mit Google z.B. "nc datei viewer" gesucht, aber die Viewer, die dort vorgeschlagen wurden, konnten bei genauer Betrachtung keine nc-Datei öffnen; oder für sie waren nc-Dateien eine Art von topografischer Karte (???)

netcdf wurde definitiv nicht erwähnt !!! - werde ich mir aber gleich anschauen ...

Wenn ich die Datei mit Hilfe von UltraEdit öffne, dann ist es wie du schon schreibst, eine Art Textdatei mit irgendwelchen Zahlenkolonnen ...

Aber darum geht es mit ja gar nicht; ich möchte die resultierende Grafik anzeigen - dafür benötige ich wahrscheinlich ein externes Programm/ Tool (denke ich) - u. mit Google komme ich nicht weiter ...

Edit: @Abt: ich muss in sofern abbitte leisten, da es sich um eine dstv-nc Datei handelt ... (--> Bei dem DSTV-Format handelt es sich um einen von dem Deutschen Stahlbau-Verband festgelegten Industriestandard. Eine DSTV-Datei ist eine Textdatei im ASCII-Format. In den meisten Fällen verfügt jedes Teil über eine eigene DSTV-Datei.)

MfG Christian

04.05.2018 - 10:50 Uhr

Hallo,

hat jemand schon einmal mit einer Grafikdatei, die auf ".nc" endet, gearbeitet?

Nach meinem Kenntnisstand ist das eine Vektorgrafik aus einem CAD-System.

Unser Kunde möchte, das wir diese Datei anzeigen und auch mit CR drucken können ...

Bin für alle Inputs u./o. Anregungen dankbar...

MfG Christian

04.05.2018 - 10:38 Uhr

Hallo,

hat schon mal jemand mit der o.g. Datenbank gearbeitet ?

Leider finde ich im Netz wenig bis gar keine Hinweise darauf 🙁

Mich interessiert dabei, wie man sich

a) mit der DB verbindet
b) Daten auslesen kann (soll ja angeblich per SQL-Befehl gehen)

MfG Christian

25.01.2018 - 08:31 Uhr

@p!lle: typischerweise 3 Masken; ich habe bei einigen Kunden aber auch schon mehr gesehen ...

@Taipi88: "Tabbed Pages mit Docking" kommt wohl für ein Wawi-System eher nicht in Frage, aber Ineressant wäre es trotzdem.

MfG ChrisProg

24.01.2018 - 14:51 Uhr

... Aber wenn Du das unbedingt benötigst, hilft Dir z.B. die Auflistung Form.OwnedForms weiter. Über die kannst Du dann z.B. alle 'OnwnedForms' ebenfalls minimieren, wenn das Hauptfenster minimiert wird und ähnliches...

Das kannte ich noch nicht - und hilft mir schon weiter, danke dir / euch für die Inputs 👍

Das mit den Forms außerhalb der Hauptmaske lasse ich erst mal so ...

Nur muss ich mir dann noch etwas einfallen lassen, wenn der Kunde die Maske außerhalb des sichtbaren Bereichs gezogen hat - wie ich diese schnell wieder zurück bekomme ...

MfG ChrisProg

24.01.2018 - 13:24 Uhr

Ich habe in Erinnerung, dass man bei MDI-Fenstern ein Minifenster am Rand hat und normale Fenster beim Minimieren - wie das Hauptfenster - einfach "in der Taskleiste" verschwinden.

Nur wenn Du die Eigenschaft "ShowInTaskbar" auf true lässt ...
Aber das finde ich noch unsinniger, wenn man alle Untermasken in der Taskleiste anzeigt ...

MfG ChrisProg

24.01.2018 - 13:04 Uhr

Warum willst Du denn Benutzer in ihrer UX gängeln und einschränken?
Das ist eine extreme bad practise in der UX. Wieso willst Du dem Benutzer nicht seine Freiheit lassen?
hat das tatsächlich funktionale Gründe - oder Politik?

weder noch - ich finde es einfach schöner, wenn die Untermasken sich innerhalb der Grenzen der Hauptmaske bewegen (vielleicht bin ich da zu "oldschool") ...

Auch stört mich, das, wenn ich die Hauptmaske minimiere, die Untermasken geöffnet bleiben; minimiere ich sie ebenfalls, so erhalten sie ein kleines eigenes Fenster - finde ich einfach nicht schön ...

All diese Eigenschaften habe ich mit MDI nicht ...

Wenn jemand in diesem Bereich Denkanstöße hat - bitte immer gerne her damit 😁

MfG ChrisProg

24.01.2018 - 12:39 Uhr

OK, aber wenn ich auf MDI verzichte, wie kann ich dann verhindern, das eine Untermaske den Bereich der Hauptmaske verlässt (also per Maus herausgeschoben werden kann, z.B. auf den zweiten Monitor...) ?

MfG ChrisProg

24.01.2018 - 09:42 Uhr

@p!lle: ja, ich nutze Win10 ...

@inflames2k: nein ist es natürlich nicht, aber ein einheitliches Erscheinungsbild wäre natürlich schöner ...

MfG ChrisProg

22.01.2018 - 12:18 Uhr

Hallo zusammen,

Ich habe da mal eine Verständnisfrage:

wie steuert MS das Design der Forms ?

Ich habe ein Projekt, bei denen die Haupt-Forms (MDI-Clients) alle im Win7 Design dargestellt werden; alle anderen Masken aber im Win10 Design (auch die Messagebox) und das obwohl bei beiden Forms nichts an den Standardeinstellungen bezüglich FormBorderStyle geändert wurde 🤔

MfG ChrisProg

18.01.2018 - 12:55 Uhr

So,

der Tip mit der regasm.exe hat funktioniert - anschließend konnte ich die COM.dll benutzen.

Warum das vorher nicht ging, trotz vorhandener Registry-Einträge wird wohl MS Geheimnis bleiben 🤔 😜

Danke an alle für die Inputs 😉

MfG ChrisProg

17.01.2018 - 15:35 Uhr

OK, wieder was dazugelernt ...

Ich bin dann wohl einer Fehlinfo seitens MS erlegen: -->Regasm.exe

Dort steht:

Zum Ausführen des Tools verwenden Sie die Developer-Eingabeaufforderung (oder die Visual Studio-Eingabeaufforderung in Windows 7). Weitere Informationen finden Sie unter Developer-Eingabeaufforderung für Visual Studio..

Und das gibt es doch nur mit dem SDK, oder ?

Danke - bis hierher erst einmal ...

MfG ChrisProg

17.01.2018 - 14:42 Uhr

Wie soll man daraus schlau werden?

Also, wenn ich nicht total daneben liege, dann gibt es zu Ausführen der .NET-Programme die "normalen" Runtimes - das .NET-Framework.

Aber um Programme entwickeln zu können brauche ich das .Net-Framework SoftwareDeveloperKit und das enthält die regasm.exe, oder etwa nicht ?

Korrigiert mich bitte, wenn ich damit falsch liege ...

MfG ChrisProg

17.01.2018 - 12:22 Uhr

Ich habe nicht gesagt "ohne", die "normalen" Runtimes werden schon benötigt..

Zur Info: das ist nur eine Hilfs-dll, um eine E-Mail aus VFP heraus per Outlook zu versenden (leider gibt es diesbezüglich einen Bug in VFP --> der Absender kann nicht gewählt werden, u. genau diese Funktion brauche ich )

Das ich die regasm.exe einfach so kopieren kann, wusste ich nicht (werde ich umgehend ausprobieren) ...

MfG ChrisProg

17.01.2018 - 12:10 Uhr

Um das tun zu können müsste ich doch das .Net-Famework SDK auf den Kundenrechner installieren - und das kommt leider nicht in Frage ...

MfG ChrisProg

17.01.2018 - 11:59 Uhr

Hallo hypersurf,

Ja, ich meine einen Remotedesktop-Benutzer.

Leider gibt es keinen Stack-Trace, da ich die DLL mit VisualFoxPro aufrufe --> CreateObject(COMServer.Class")

oSendOutlMail = CreateObject("VFPsendmail.SendOutlookMail")

und direkt hier erhalte ich die Fehlermeldung "OLE-Fehlercode 0x80040154" die Klasse ist nicht registriert ...

Wie gesagt, es muss etwas mit den Remotedesktop-Clients zu tun haben (damit kenne ich mich nicht so gut aus, u. ich glaube leider der Systembetreuer des Kunden auch nicht ...) - auf einer lokalen Maschine mit direktem Programmaufruf funktioniert alles genau so wie es soll !

MfG ChrisProg

17.01.2018 - 09:01 Uhr

Hallo zusammen,

ich habe ein C#-COM-Dll geschrieben (inkl. einer REG-Datei).

Auf einer lokalen Maschine funktioniert das ganze Wunderbar...

Bei einem Kunden, der nur mit Terminal-Clients arbeitet, wurde die DLL mit Hilfe der reg-Datei über eine Service-Rolle durch den zuständigen Systembetreuer eingespielt (ich kann die Einträge unter HKLM sehen...)

  • trotzdem sagt unsere Software ständig "> Fehlermeldung:

OLE-Fehler - die Klasse ist nicht registriert " 🤔

Die einzelnen User sind keine Admin´s (aber auch das angebliche Setzen der Admin-Rechte eines Users brachte keine Veränderung).

Was muss auf einem Terminal-Client gemacht werden, bzw. wie muss der User Rechte-mäßig eingestellt werden, damit eine Registrierung/Zugriff erfolgreich ist ???

MfG ChrisProg

26.10.2017 - 07:54 Uhr

Es ist aber Tatsache, dass alte SQL Server Versionen wirklich nur Stored Procs und dessen Execution Plan cachen konnten.
Neue SQL Server Versionen können jede Art von Statement (adhoc / sproc) cachen und diese einfach parametrisieren.
Der Performance-Vorteil von Stored Procs gibt es so gar nicht mehr.

Zur Preformance schau dir mal den Beitrag an:
>

Nach diesem Artikel / Abt´s Beschreibung würde es ja wenig Sinn machen eine stored procedure zu verwenden, wenn SQL die vorherigen Scripts im Speicher behält ...

Nur muss man wahrscheinlich darauf achten, das man dann weiterhin mit dem Parameter ("artikel" in meinem Beispiel) arbeitet, damit SQL das Script als bereits vorhanden erkennt.

Danke allen für die Inputs, ich werde alles noch mal überdenken ... 🙂

MfG ChrisProg

25.10.2017 - 16:41 Uhr

Hallo

Wenn Du wirklich das Übertragen von 17 Byte Deines Queries einsparen willst, dann nennt sich das Mikro-Optimierung.

Es geht mir nicht um 17 Byte ( wie kommst Du auf diese Zahl ?) sondern um die Zeit die der SQL-Server offensichtlich jedes mal braucht um das Script zu generieren ...

Wenn das tatsächlich Dein einziges Bottleneck ist, die Übertragung eines Queries, dann Respekt.

Das ist mit Sicherheit nicht mein einziges Problem; ich habe gerade erst mit dem Projekt begonnen u. will halt von Anfang an versuchen so viel Zeit zu optimieren wie möglich.

Denn bis jetzt finde ich c# + MS SQL ist nicht schneller als VFP 8o - oder (was wohl wahrscheinlicher ist) ich habe noch nicht die richtigen Wege / Methoden gefunden ... X(

MfG ChrisProg

25.10.2017 - 16:16 Uhr

Hallo,

@Abt: danke für deine Ausführungen...

Aber mein eigentliches (vielleicht auch nur gedankliches) Problem löst das nicht.

Das mit dem Drei-Schichten-Modell ist einleuchtend u. auch mit Sicherheit in größeren Projekten und im Team sinnvoll.

Noch mal zum Verständnis:

Ich habe, sagen wir mal 200 Artikel, von denen ich nacheinander die aktuelle Menge und die aktuellen Kosten/ Gewinne ermitteln möchte ...

Nacheinander alleine schon deshalb, um dem Kunden in der Statusleiste anzuzeigen, bei welchen DS / Artikel das Programm gerade ist.

Wie gesagt, das Script ist mehr als 400 Zeilen groß und es ändert sich jedes mal nur die Artikel-Nr als Filter.

Meine Logik sagt mir, das es auch eine gewisse Zeit braucht, bis ich das Script per SqlCommand an die DB übergeben habe, der Interpreter den Code in eine temporäre Prozedur umgewandelt (so habe ich es verstanden ...) und ausgeführt hat.

Nun wollte ich mir die Zeit für das 200-malige übertragen des Codes und das ebenfalls 200-malige erstellen einer temporären Prozedur sparen - deshalb der Gedanke einer "stored procedure", bei der ich ja nur noch den Parameter artikel übergeben muß.

Alleine schon, wenn diese beiden Möglichkeiten im Management Studio ausprobiere merke ich einen Zeitunterschied.

Für einen einfachen "Select ..." würde ich niemals auf die Idee einer stored procedure kommen...

Mir ist natürlich klar, das auch diese stored procedure dann gepflegt werden muss - ich plante die entsprechenden stored procedures per drop beim beginn der Programmausführung zu löschen und dann einmalig neu zu schreiben - wobei mir jetzt beim schreiben dieser Zeilen klar wird, das auch das nicht sauber funktionieren kann in einer Multi-User-Umgebung 🤔 --> bleibt dann doch bei einer temporären Prozedur 🙁

MfG ChrisProg

25.10.2017 - 11:34 Uhr

Hallo,

Um Zeiten zu sparen und die Performance zu verbessern gibt es andere Wege statt die Datenbank als Logikschicht zu missbrauchen 😉

Und was könntest Du mir da für WindowsForms empfehlen ?

MfG ChrisPorg

25.10.2017 - 11:09 Uhr

Hallo,

meinst du im Grunde SQL-Skript?

ja ...

Wie stellst du dieses Skript zusammen?

Ich erstelle das Script (mehrere Tabellen, die über union all verknüpft ausgelesen und das Ergebnis in eine temp-Table gespeichert und anschließend weiterverarbeitet wird) immer erst im Management Studio; danach kopiere ich es in meine c#-Anwendung (als sql-command...)

Wie viele Tabellen hat ca. so eine DB?

über 70 (von denen aber für die Abfrage "nur" ca. 30 für die Abfragen gebraucht werden) ...

Wie Abt schon gepredigt hatte wird dadurch die Wartbarkeit und Skalierung negativ beeinflusst. In dem Fall ist diese Art von Optimierung eher nicht zu empfehlen.

Wieso beeinflusse ich die Skalierbarkeit des SQL-Servers - dieses Script () muss so ausgeführt werden - und die Skalierbarkeit hat doch eher was mit der hardwareseitigen Optimierung zu tun, oder ?

Ich war halt nur der Meinung das ich mit Hilfe einer stored procedure Zeit sparen kann, da ich ja das Script nicht jedes mal wieder an den SQL-Server schicken muss ...
So ein Script kann schon mal fast 1 s dauern (wenn es extrem viele Buchungen für diesen Artikel gibt) - das ist bei einer einzelnen Abfrage noch kein Problem; nur wenn ich Statistiken erstellen soll ...

MfG ChrisProg

25.10.2017 - 07:54 Uhr

Hallo,

das war natürlich nur ein kleines Beispiel.

Konkret geht es z.B. um über 400 Zeilen Code mit deren Hilfe ich über (fast) alle Tabellen einer DB z.B. die aktuellen Bestände / Kosten eines Artikels ermittle ...

Als Ergebnis bekomme ich dann eine Tabelle / ein Ergebnis zurück.

Der Code ist dabei immer bis auf z.B. die Artikel-Nr identisch.

Ich habe bisher diese Zeilen in einem SQL-Command direkt gesendet (funktionierte einwandfrei ...) - nun wollte ich (um das ganze zu optimieren - Zeitersparnis ?) das in eine stored procedure packen - da wir mehrere Mandanten haben und ich die stored procedure nicht in jeden Mandanten eintragen will, kam ich halt auf den Gedanken diese stored procedures global zu speichern.

@Abt: ich dachte der Befehl QUOTENAME wäre extra dafür da, um das Injezieren zu verhindern ?

MfG ChrisProg

24.10.2017 - 16:33 Uhr

verwendetes Datenbanksystem: MS SQL-Server 2012

Hallo,

ich versuche gerade in die [master]-DB eine stored procedure zu schreiben, damit ich nicht in jeden Mandanten die stored procedure reinschreiben muß ...

Das funktioniert soweit auch ganz gut.

Nachdem die stored procedure erstellt wurde wird vom MS immer noch die ersten 7 Zeilen vorangestellt:

USE [master]
GO
/****** Object:  StoredProcedure [dbo].[sp_meineprozedur]    Script Date: 24.10.2017 16:20:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[sp_meineprozedur] (@nr int) 
 as  
 begin
  print (db_name())
  
  select * from meinetabelle
end;

Ich rufe die prozedur mit

DECLARE @DatabaseName sysname = 'meineDB'; 
declare @sql nvarchar(255);
SET @SQL = N'USE ' + QUOTENAME(@DatabaseName) + '; exec sp_meineprozedur 27;' 
print (@sql);
exec (@sql)

Anhand des Befehls "print (db_name())" kann ich sehen, das die richtige DB ausgewählt wurde;
trotzdem erhalte ich immer die Fehlermeldung: > Fehlermeldung:

"Ungültiger Objektname 'meinetabelle'.

Was muß ich noch beachten / mache ich noch falsch ???

MfG ChrisProg

14.07.2017 - 12:54 Uhr

@FZelle:
Vorab: ich bin Autodidakt und kein Studierter (und komme noch aus der VB u. FoxPro-Ära wo ich nahezu 18 Jahre erfolgreich programmiert habe) ...
Nun bin ich seit 2 Jahren dabei, mich schrittweise in C# einzuarbeiten - obwohl ich VFP immer noch für das bessere DB-Programm halte (aber es wird nicht mehr weiterentwickelt und ist auch mit 64-Bit nicht kompatibel)

Warum soll ich nicht alles das, was ich immer wieder in allen Stammmasken brauche, in eine BasisForm packen ? Wenn ich die TabControls in ein UI-Control packe, habe ich ja nur die Hälfte in einer Klasse.

Ähnlich, wie "ErfinderDesRades" tue ich mich auch schwer darin, das Drei-Schichten-Modell als Allheilmittel anzusehen - ok, der Code ist zwar durch die optische Aufteilung schneller zu finden, aber ob das nun einfacher ist ...

Das mit "global" ist im Moment mein Ernst, bis ich was besseres gefunden habe: es beinhaltet alles Methoden die ich immer wieder brauche, aber nicht in allen Form´s u. Prg´s reinschreiben will - wenn dann nämlich eine Änderung/Anpassung kommt muss man das ja wieder an allen möglichen Stellen machen ...

Das das der gekapselten Objektprogrammierung widerspricht, ist mir klar ...

Wenn Du dafür einen besseren Vorschlag hast, ich bin ganz Ohr ...

Ich denke, ich habe verstanden was das ref-Schlüsselwort bedeutet - an der von Dir gezeigten Stelle ist es natürlich nicht zweckführend (obwohl es funktioniert) - es sind dort noch viele Optimierungen zu machen, das ist mir klar (vieles davon ist noch kopierter, abgewandelter Code) ...

MfG Christian

14.07.2017 - 10:49 Uhr

Du meinst einfach so

public Mandantenstamm()

hat auch nichts gebracht...

Mich beschleicht der Verdacht, das es was mit meinem Rechner zu tun haben könnte; werde das mal am WE zu Hause probieren ...

MfG Christian

14.07.2017 - 10:14 Uhr

So, hier ist die abgespeckte Version:

Sie ist nicht lauffähig (zu weit abgespeckt, um die 256k zu erfüllen), aber das braucht sie auch nicht...

Es wird (hoffentlich) direkt beim öffnen die Maske "Mandantenstamm" (Formular) angezeigt.

Kopiert man nun aus einer anderen Instanz heraus mehrere unterschiedliche Felder, so erhält man die besagte Fehlermeldung ...

MfG Christian

14.07.2017 - 09:31 Uhr

also mit VS 2010 beendet sich auch der Debugger ... 🤔

Vorschläge ?

MfG Christian

14.07.2017 - 09:22 Uhr

Du legst ein neues Hauptfenster an und löscht aus diesem den Auftrag.
Aus dem tatsächlich angezeigten Hauptfenster entfernst du nichts.

🙁 -da war ich wohl völlig verpeilt, als ich das geschrrieben habe, oh man ...
So funktioniert´s dann auch ..

((Test.MainWindow)(((Grid)((ScrollViewer)((StackPanel)((Expander)(this.Parent)).Parent).Parent).Parent).Parent)).delete_element(sender);

Kann man das eigentlich noch vereinfachen ?

Danke, für´s drüberschauen 👍

Schaue dir mal, wie schon von MrSparkle erwähnt,
>
an.

Wenn ich ehrlich bin, habe ich mir das schon mal angeschaut, aber leider nicht wirklich viel verstanden X(

Ach ja, und deine Anwendung beendet sich nach dem Schließen nicht richtig. 😄

Und damit meinst Du was ?

Ich sehe nichts mehr im TaskManager, nachdem ich das Prg geschlossen habe ...

MfG Christian

13.07.2017 - 22:50 Uhr

@p!lle:
Hier ist das Testprojekt...

MfG Christian

13.07.2017 - 16:38 Uhr

Mach den Designer mal im Debugger auf.. damit Du eine Ahnung hast wieso es knallt...

Hier hatte ich das mal beschrieben:
>

Hat leider auch nicht geklappt; könnte aber auch daran liegen, das ich ja mein "anderes" Projekt gar nicht am "laufen" habe (wie Du in dem anderen Thread schreibst) ...

Ich bereite mal ´ne abgespeckte Version vor ...

MfG Christian

13.07.2017 - 15:02 Uhr

Du könntest das Zielform im Code so ändern dass es von Form erbt... dann scheint das kopieren ja zu funktionieren.

Nach dem kopieren änderst Du die Form wieder so ab, dass die wieder von Deiner Baseclass erbt.

Geht leider nicht, da ich aus der Basisklasse ein TabControl vererbe; und in dieses werden die Objekte kopiert ...

MfG Christian

13.07.2017 - 11:51 Uhr

@p!lle:

Ja, ich versuche es heute Abend zusammen zu stellen (sonst am WE).

Da ich anscheinend keine Datei an eine PN hängen kann, schicke ich Dir das per E-Mail, wenn es OK ist ?

MfG Christian

13.07.2017 - 11:17 Uhr

@Sir Rufo:
Hierbei über WinForms 😉

Das andere (WPF) ist nur für meine Weiterbildung 😁

MfG Christian

13.07.2017 - 10:50 Uhr

Ich will mit einem Rechtsklick auf ein UserControl, welches über den Expander.Content an einem StackPanel hängt, genau dieses nach einer Sicherheitsabfrage löschen (also den Expander mit dem enthaltenen UserControl)

Ich habe dann also im Rechtsklick des UserControls eine Prozedur in der MainForm aufgerufen; in dieser ermittle ich das entsprechende StackPanel.Child um es dann zu löschen ...

Ich muß das ganze dynamisch machen, da die einzelnen Elemente des StackPanel erst zur Laufzeit vorhanden sind und dauernd welche hinzu kommen können ...

Stell dir das Board eine Fluglotsen vor, in dem immer wieder neue Flugzeuge (Streifen) hinzukommen und die erledigten herausgenommen werden ...

MfG Christian

13.07.2017 - 09:57 Uhr

leider nein ...

dann muß ich halt so weitermachen ...

Das betrifft auch komischerweise "nur" Objekte, die ich aus einer "normalen" Form auf eine Form mit einer vererbten Basisklasse kopiere; wenn ich aus einer anderen Form (oder auch der selben) mit Basisklasse kopiere, funktioniert es ... 🤔

MfG Christian

13.07.2017 - 08:13 Uhr

Kurzer Zwischenstand:

es scheint daran zu liegen, das es das StackPanel nicht mag, wenn es aus sich heraus (also wenn es den Focus hat ...) ein Element löschen soll ...

Mach ich das über einen Button, dann funktioniert es wie gewollt 🤔

Mal schauen, wie ich das löse ...

Der geplante Ablauf:
Ich wähle ein UserControl, welches als Content am Expander hängt, per Rechtsklick aus, um diesen Expander samt UserControl dann zu löschen.

MfG Christian

13.07.2017 - 08:03 Uhr

@BhaaL:
Leider keine Änderung ...

@123thomas:
Auch das hat leider nichts gebracht ...

@MrSparkle:
Wenn Du damit meinst, ich solle den »Form«.Designer öffnen u. mir daraus den Code kopieren - das ist ja noch umständlicher, zumal die entsprechenden Codeteile ja auch noch an diversen Stellen stehen ...

MfG Christian

12.07.2017 - 15:25 Uhr

Aber du könntest mal versuchen, ein zweites Visual Studio zu starten und dich ans erste dran zu hängen. Wenns in deinem eigenen Code kracht, solltest du das damit auch rausbekommen. Eventuell vorher unter Tools > Options, Debugging den Haken bei "Enable Just my Code" weg.

Kannst Du mir das bitte mal genauer erklären ?

MfG Christian

12.07.2017 - 15:22 Uhr

Arbeitest Du wirklich noch mit VS 2010, wie es Deinem Profil hinterlegt ist? 👶

ja ...

12.07.2017 - 15:12 Uhr

Hallo Zusammen,

Ich versuche gerade mir ein Formular-Basisklassen-System aufzubauen, also eine Basisform, von der die anderen Formen abgeleitet werden - das klappt soweit wunderbar ...

Will ich nun aus anderen Forms mehrere Objekte (Panel, Textboxen, Label, etc.) per Strg+C u. Strg+V einkopieren erhalte ich immer folgende Fehlermeldung:> Fehlermeldung:

Fehler beim Verarbeiten dieses Befehls.
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

Kopiere ich nur ein Obkejt funktioniert es (außer bei Panel) 🤔

Gibt es eine Möglichkeit die Entwicklungsumgebung für solche Fälle in den Debug-Mode zu bekommen, um den Fehler eventuell zu korrigieren oder was kann ich sonst tun, damit ich wieder mehrere Objekte gleichzeitig kopieren kann - das spart doch einiges an Zeit ...

MfG Christian

07.05.2017 - 00:36 Uhr

@ErfinderDesRades:

Der Code wird definitiv durchlaufen, aber ohne Fehlermeldung.

Wenn ich dort einen Haltepunkt setze und dann im Direktfenster

this.stackPanel1.Children.Remove(child)

eingebe, erscheint als Antwort:

Der Ausdruck wurde ausgewertet und weist keinen Wert auf.

Das gleiche gilt für den Befehl

this.stackPanel1.Children.Clear()

Kann es daran liegen, das ich im Content ein UserObject eingebaut habe - Asche auf mein Haupt, ich war wohl heute Nacht ein wenig Müde es muß heissen

dynamicExpander.Content = UserControl;

@Th69: wie gesagt, ich benutze natürlich den Debugger, erhalte aber keinerlei Fehlermeldungen ...

MfG ChrisProg

06.05.2017 - 04:26 Uhr

Hallo zusammen,

ich habe ein StackPanel, das ich folgendermaßen fülle:


Expander dynamicExpander = new Expander();
dynamicExpander.Header = "Test";
dynamicExpander.HorizontalAlignment = HorizontalAlignment.Left;
dynamicExpander.Background = new SolidColorBrush(Colors.Lavender);
dynamicExpander.Width = this.stackPanel1.Width;
dynamicExpander.IsExpanded = false;
dynamicExpander.Content = "Test2";

stackPanel1.Children.Add(dynamicExpander);

(das ganze natürlich mit mehreren unterschiedlichen Childs)
wenn ich nun ein bestimmten Child löschen möchte, so sollte es doch eigentlich mit


foreach (UIElement child in this.stackPanel1.Children)
{
     if (((HeaderedContentControl)((child as FrameworkElement))).Header.ToString().Trim()) == "Test"
     {
            this.stackPanel1.Children.Remove(child);
            break;
      }
}

aber leider wird nichts gelöscht 🤔

auch ein

this.stackPanel1.Children.Clear()

lösch kein einziges der Objekte ...

Was mache ich falsch ?

MfG ChrisProg

26.04.2017 - 11:22 Uhr

Hallo Taipi88,

naja - wenn deine Form "nackt" angezeigt wir - würde ich fast vermuten, dass deine Stammmaske zwei Konstruktoren hat und du beim erben den aufrufst, der nicht "InitializeComponent" aufruft. (Eine vom Forms-Designer generierte Methode) Strike! manchmal sieht man den Wald ...

Unabhängig davon wird das alleine dir auch nichts helfen, da die vom Designer erstellten Controls mit "private" markiert sind im Standard. (Wirst du dann für jedes Control anpassen müssen, damit du in der erbenden Form irgendwas daran schrauben kannst)

Und wie stelle ich das an ?

Beispiel Navigationsleiste:
Im Designer.cs habe ich die entsprechenden Objekte "public" gemacht ...

        public System.Windows.Forms.BindingNavigator Navigationsleiste;
        public System.Windows.Forms.ToolStripButton bindingNavigatorAddNewItem;
        public System.Windows.Forms.ToolStripLabel bindingNavigatorCountItem;
        public System.Windows.Forms.ToolStripButton bindingNavigatorMoveFirstItem;
        public System.Windows.Forms.ToolStripButton bindingNavigatorMovePreviousItem;
        public System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator;
        public System.Windows.Forms.ToolStripLabel positionsanzeige;
        public System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator1;
        public System.Windows.Forms.ToolStripButton bindingNavigatorMoveNextItem;
        public System.Windows.Forms.ToolStripButton bindingNavigatorMoveLastItem;
        public System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator2;
        public System.Windows.Forms.ToolStripButton loeschen_button;
        public System.Windows.Forms.ToolStripButton speichern;
        public System.Windows.Forms.ToolStripButton rueckgaengig;

trotzdem kann ich nicht darauf zugreifen ... (beim TabControl übrigens hervorragend ...)

Ist das diese "Einschränkung im Designer" und ich kann auf Ereignisse nur über z.B. Zuweisung

Navigationsleiste.AddNewItem.Click += new EventHandler(bindingNavigatorAddNewItem_Click);

darauf zugreifen, oder gibt es doch noch andere Möglichkeiten ???

Dein Verständnisproblem kann ich nicht nachvollziehen in puncto Konstruktoren. Was verstehst du nicht? Die Kernaussage des Threads ist nämlich im Prinzip:

"Eine Form muss eine parameterlosen Konstruktor haben, damit der Designer funktioniert."

Ich habe die Worte verstanden u. es auch umgesetzt, nur verstehe ich den Sinn dahinter nicht ... =)

@Abt: wenn ich ehrlich bin, habe ich mir deinen Link angeschaut u. nicht verstanden was da passiert ... X(

MfG ChrisProg

25.04.2017 - 14:59 Uhr

Hallo zusammen,

nachdem nich mich den ganzen Morgen hier durch die Vererbung durchgelesen habe;

auch das Problem mit Der Konstruktor für den Typ ... gefunden gefunden, korrigiert, aber nicht wirklich verstanden habe (vielleicht kann mir jemand dazu auch noch ein verständliches Beispiel nennen ...),

habe ich das nächste Verständnisproblem:

Ausgangslage:

  1. eine Basis-Form ("Stammmaske"), die einen Binding-Navigator, ein Tab-Control und eine Statusleiste u. diverse Methoden enthält.

  2. eine Form (Kundenstamm), die von der Basis-Form erbt


...
public partial class Kundenstamm : Stammmaske
/
...

Wenn ich die Form "Kundenstamm" ausführe, dann sehe ich, wie erwartet, den Binding-Navigator, das Tab-Control u. die Statusleiste; u. es werden die enthaltenen Methoden ausgeführt.

Öffne ich aber den "Kundenstamm" mit dem Designer, so sehe ich "nur" eine nackte Form 🤔

Eigentlich hätte ich auch jetzt hier erwartet die o.g. Controls zu sehen u. bearbeiten / erweitern zu können ...

Die Basisform soll mir eigentlich als Vorlage für dauernd (in jeder Form) wiederkehrende Methoden und Eigenschaften dienen, so das ich dann nur noch die jeweils individuellen Controls, Eigenschaften u. Methoden hinzufügen muß ...

Irgendwie tue ich mich da wohl mit c# etwas schwer, auch finde ich, das die ganze Vererbung doch wesentlich komplexer als in FoxPro ist (in VFP z.B. wurden die geerbten Methoden im Designer niemals aufgerufen nur in der Ausführung ...)

Wer kann mir da helfen, bzw. wo kann ich mich verständlich einlesen ???

MfG ChrisProg

09.03.2017 - 09:40 Uhr

Hi,

danke für die Info´s , ich werde mich mal da durcharbeiten ...

MfG

09.03.2017 - 07:46 Uhr

Hi Taiipi88,

ja genau den ...

Na Super, dann ist´s ja kein Wunder das ich nicht weiter komme ...

Kannst Du mir eine Alternative empfehlen ?

MfG

08.03.2017 - 22:53 Uhr

Hallo zusammen,

ich beschäftige mich gerade mit WPF, zu diesem Zweck habe ich mir ein kleines Projekt vorgenommen, in dem es unter anderem möglich sein soll, eine Datum/Zeit (schreibt man das so ?) auszuwählen.

Ich bin dann ziemlich schnell auf WPF DateTimePicker gestoßen, komme aber leider bei einigen Dingen nicht weiter 🙁

Weiß irgendjemand eine Quelle an der ich Hintergrundinformationen zum WPF DateTimePicker finden kann ?

Konkret suche ich folgendes:

  • verhindern des Kontextmenüs der enthaltenen Textbox ( ich möchte über den Rechtsklick einfach die aktuelle Datum/Zeit einfügen (ist ja kein Problem...) aber immer kommt diese bl... 😜 Kontextmenü hoch
  • wenn ich mich mit den Pfeiltasten im Textfeld bewege, wird immer ein entsprechender Block(Tag, Monat, Jahr, Stunden oder Minuten) markiert, welches ja eigentlich gut ist; aber wenn ich dann z.B. im Block Stunden "15" eingeben will, dann ersetzt er mir den ganzen Block mit "1", die "5" überschreibt dann den ":" 🤔

Deshalb die Frage nach Quellen, ich habe leider auch unter Google nichts gefunden (jede Wette sind mir wieder nicht die richtigen Schlüsselwörter eingefallen ...)

MfG ChrisProg