Laden...

Forenbeiträge von oli001 Ingesamt 449 Beiträge

23.04.2007 - 10:22 Uhr

Hallo zusammen,

ich baue mir gerade eine eigene Methode zum Drucken von Tabellen. Das einzige Problem, dass ich habe ist, dass ich die Breite einer Zelle vorher bestimmen muss. Abhäüngig von der eingestellten Schriftgröße ist diese ja unterschiedlich. Wie kann ich mit einem übergebenen String und der eingestellten Schriftgöße die Breite in Pixeln errechnen?

Vielen Dank,

Oli

20.04.2007 - 09:57 Uhr

Hi,

ist´s not a bug it´s a feature.

Ich würde es mit dem Event KeyPressed versuchen und dort der SelectedIndexCollection dieses hinzufügen.

Grüße Oli

20.04.2007 - 09:41 Uhr

Hallo,

hab jetzt nochmals ausführlich nachgedacht und gelesen und bin auf eine relativ einfache Lösung für dieses Problem gekommen.

Allerdings funktioniert das nur, wenn die aufzurufende Form ein MdiChildren ist:

In der Main:


 private ms_anz_Click(object sender, EventArgs e)
 {
     foreach (object test in MdiChildren)
     {
        if (test is View.MessstelleAuswählen)
         {
            ((Form)test).Show();
            ((Form)test).WindowState = FormWindowState.Maximized;
            return;
          }
      }
      View.MessstelleAuswählen mA = new    BAT_Hausleittechnik.View.MessstelleAuswählen();
      mA.MdiParent = this;
      mA.Show();
      mA.WindowState = FormWindowState.Maximized;
      mA.BringToFront();
 }

Damit lösen sich alle oben erwähnten Probleme auf einmal. Hätte man auch eher draufkommen können, anstatt sich im Singleton festzubeißen... X(

Grüße Oli =)

20.04.2007 - 08:58 Uhr

Hallo herbivore,

Vielen Dank, das funktioniert soweit. Das Einzige, was mir noch nicht gefällt ist nun, dass wenn das Fenster geschlossen und wieder geöffnet wird, dass es dan nicht im HauptForm maximiert ist. mA.MaximizeBox=true, hat keine Wirkung gezeigt.

Grüße Oli

20.04.2007 - 08:42 Uhr

Hallo herbivore,

ok, damit wäre diese Frage geklärt. Das reißt aber gleich die nächste auf. Wenn ich das Fenster mit einem Button schließe, kann ich ja Hide verwenden, aber wenn ich es mit dem "X" der Control Box schließe, kann ich das nicht mit Hide tun. Auch die Events FormClosed oder FormClosing bringen mich hier nicht weiter, weil da ja davor, bzw. danach Disose() ausgeführt wird.

Kann man dieses "X" aus der ControlBox abfangen?

Grüße Oli

20.04.2007 - 08:28 Uhr

Hallo Nils,

also der Singleton sollte so in Ordnung sein,
mit sealed kann die Klasse nicht beerbt werden,
der Konstrukror ist durch privte nach außen nicht sichtbar

und public static readonly :
- static sorgt für internes Thread_handling
- readonly Object kann nachträglich nicht geändert werden
- Initialisierung nach erstem Aufruf, danach fest im Code installiert

somit sollte das singleon sein

aber nochmal zum eigentlichen Problem:

In meiner MainForm rufe ich über ein MenuItem dieses Form auf mit:

        View.MessstelleAuswählen mA = View.MessstelleAuswählen.Instance;  
        mA.MdiParent = this;  
        mA.Show();  
        mA.BringToFront();  

Ok. Erster Aufruf klappt. Nun Mache ich ein anderes Form auf und danach wieder das Erste (über die Menuleiste). Nun wird keine neue Instanz dieser MessstelleAuswählen erzeugt, sondern die vorhande genutzt. Diese Form existiert also immer nur einmal. Wenn ich diese Form aber schließe (this.Close) werden die Components aber mit Dispose() entfernt, die Instanz lebt aber immer noch, allerdings ohne ihre Komponenten.
Bei erneutem Aufruf der MessstellenAuswählen bekomme ich nun folgende Exception:

Cannot access a disposed object.
Object name: 'MessstelleAuswählen'.

Nun ist die Frage wie ich das lösen kann. Also Fenster schließen ohne die Komponenten zu verlieren.

Viele Grüße

Oli

20.04.2007 - 08:01 Uhr

Moin zusammen,

Ich eine Klasse:


public sealed partial class MessstelleAuswählen : Form
    {
        #region Members
        private Hausleittechnik.StoredProcs.StoredProcs _storedProcs;
        private Sybase.Data.AseClient.AseConnection _sybconn;
        
        DataSet _areaList = new DataSet();
        DataSet _subSystemlist = new DataSet();
        List<Button> _buttonList = new List<Button>();
        #endregion

        #region Constructor
        private MessstelleAuswählen()
        {
            InitializeComponent();
            DatabaseConnection.DatabaseConnection dbConn = DatabaseConnection.DatabaseConnection.Instance;
            
            _storedProcs = dbConn.getStoredProcs();
            _sybconn = dbConn.getAseClient();

            string[] values ={ null };
            _areaList = this._storedProcs.getStoredProc(this._sybconn, "AreaList", values); 
            _subSystemlist = this._storedProcs.getStoredProc(this._sybconn, "SubsystemList", values
        }
        #endregion

public static readonly MessstelleAuswählen Instance = new MessstelleAuswählen();


Wenn ich diese Klasse nun von meiner Main() mit show aufrufe, ist das Verhalten so wie man es sich vorstellt. Über die Menüleiste kann das Fenster nur einmal geöffnet werden. Wenn man nun allerdings das Fenster schließt und es wieder öffnet, bekomme ich eine Exception, da nach dem Schließen mit this.close, ja Dispose() aufgerufen wurde.

Sicher könnte ich das Problem mit der visible - Methode lösen, aber das ist glaub kein wirklich guter Stil. Wie kann ich nun ein Fenster "schließen" ohne die registrierten Komponenten zu löschen?

Danke Oli

19.04.2007 - 15:49 Uhr

Hi nochmal,

kann mir jemand sagen welche KOmponente createHandle(); aufruft?

Danke Oli

19.04.2007 - 15:20 Uhr

Hi,

ich schließe das Fenster ja in der Load. Wenn ich handleCreate() aufrufe kommt die Exception dass dieses Handle schon existiert. Und wenn ich handleCreate nicht aufrufe kommt die Exception, dass close() nicht während aufgerufen werden kann, solange die Funktion handleCreate() ausgeführt wird.

Gruß

19.04.2007 - 14:58 Uhr

Hi,

wie kann ich warten, bis ein Handle erstellt wurde. Ich öffne ein Fenster, im Constructor wird InitialiseComponents(); ausgeführt, in der Load möchte ich abhängig von einer Usereingabe das Fenster wieder schließen. Problem ist, dass zu dieser Zeit die Initialisierung noch nicht abgeschlossen ist, somit bekomme ich eine Exception bei this.Close();

Grüße Oli

18.04.2007 - 15:35 Uhr

Vielen Dank,

aber ich bin leider ein VOLLDEPP!!!!! ⚠

Es lag weder an der Formatierung noch am Konvertieren. Die Spalte in meiner Tabelle war vom Typ Double.... Naja und das da dann kein String.Format funzt ist ja fast schon logisch...

Trotzdem vielen Dank.

Grüße Oli

18.04.2007 - 15:07 Uhr

Hi,

ich weiss einfach nicht meh weiter.
Ich bekomme aus einer Datenbank Messwerte. Diese können in allen möglichen Formen (123.233332, -0,234234234234534, 1, 2,00 usw...) vorkommen.

Ich versuche in einer DataTable folgendes zu erreichen: xxxxxx.xx

Laut MSDN sollte es doch so funktionieren:


newRow[4] = String.Format("{0:F2}",Convert.ToDouble(row[2].ToString());

Die Ausgabe ist allerdings diese, dass bei Ganzzahlen keine Kommastellen angezeigt werden und bei Kommazahlen nur eine Nachkommastelle erscheint.

Kann mir jemand sagen, was ich falsch mache?

Mit Convert.toDouble hat´s nix zu tun, das Ergebnis ist das Gleiche...

Danke,

Oli

18.04.2007 - 12:58 Uhr

Hallo,

ich lege mir in einer ListView Gruppen an. Wie kann ich überprüfen, ob es diese Gruppe schon gibt? (Dann soll diese nämlich nicht nocheinmal hinzugefügt werden)

Danke Oli

17.04.2007 - 09:53 Uhr

So, Problem (teilweise und nicht wirklich nacvollziehbar) gelöst.

Wenn ich nach dem Sortieren der Gruppen eine Dummy-Gruppe anlege


listView1.add("Dummy","Dummy");

wird die Sortierung wieder ausgeführt....

Kann mir das jemand nachvollziehbar erklären??

Danke Oli

17.04.2007 - 09:31 Uhr

Hi nochmal,

also wenn ich die Gruppen nicht sortiere, dann funktioniert es. Scheinbar wird nach einem Remove und Add der Gruppen die Sortierung nicht mehr ausgeführt.

Der ListView ist ja der ItemSorter zugewiesen, also sollte doch auch nach einem Löschen oder Neuanlegen einer Gruppe neu sortiert werden oder muss man das Sortieren neu anstoßen (und wenn ja wie??)..

Danke Oli

17.04.2007 - 08:07 Uhr

Hi,

folgendes Problem. Ich fülle eine ListView mit Daten. Die Gruppen werden so platziert, dass die mit den wenigsten Einträgen oben steht. Danach sortiere ich die Daten mit einer dem ListViewItemSorter und dem ItemComparer (überladen). das funktioniert beim Start auch tadellos, nur wenn ich die Daten aktualisiere (neu lade) funktioniert das Sortieren nicht mehr. Zum Aktualisieren lösche ich vorher die ListView und auch das DataSet, das ich erhalte.

Klasse die die ListView baut:


            ListViewGroup tempGroup = new ListViewGroup();
            for (int i = listView1.Groups.Count - 1; i >= 1; i--)
            {
                if (this.listView1.Groups[i - 1].Items.Count > this.listView1.Groups[i].Items.Count)
                {
                    tempGroup = listView1.Groups[i - 1];
                }
                listView1.Groups.Remove(tempGroup);
                listView1.Groups.Add(tempGroup);
            }

this.listView1.ListViewItemSorter = new ListViewItemComparer(0);

ItemSorter:


    class ListViewItemComparer : IComparer
    {
        private int col;
        public ListViewItemComparer()
        {
            col = 0;
        }
        public ListViewItemComparer(int column)
        {
            col = column;
        }

        public int Compare(object x, object y)
        {
            if (Convert.ToInt32(((ListViewItem)x).SubItems[col].Text) < Convert.ToInt32(((ListViewItem)y).SubItems[col].Text))
            {
                return -1;
            }
            if (Convert.ToInt32(((ListViewItem)x).SubItems[col].Text) == Convert.ToInt32(((ListViewItem)y).SubItems[col].Text))
            {
                return 0;
            }
            if (Convert.ToInt32(((ListViewItem)x).SubItems[col].Text) > Convert.ToInt32(((ListViewItem)y).SubItems[col].Text))
            {
                return 1;
            }
            else
            {
                return 0;
            }
        }
    }


Sieht jemand einen Fehler?

Vielen Dank,

Oli

13.04.2007 - 11:35 Uhr

Hi,

ich hatte ein ähnliches Problem. Ich habe mit einem Keyevent die eingetippten Buchstaben in ein Array gespeichert und in der Zelle dafür dann Sternchen angezeigt. Mit dem KeyEvent kannste dann auch gleich unzulässige Zeichen ausschließen...

Nicht sehr schön abr es funktioniert

Grüße Oli

13.04.2007 - 09:06 Uhr

Hallo blackcoin

Naja, daran hab ich schon auch dedacht, aber wie du schon selber gesagt hast, schön ist das nicht gerade....

hat keiner nen anderen Voraschlag??

Grüße Oli

13.04.2007 - 09:00 Uhr

Hallo,

ich habe folgendes Problem. Ich hole mir aus einer Datenbank eine Tabelle. Diese füge ich in einer ListView ein (ListView muss sein).
Nun möchte ich aber nicht alle columns anzeigen sondern nur einige. Aus der Tabelle kann ich die Colums aber auch nicht entfernen, da ich die Daten noch brauche. Ich möchte dann über die Items der ListView auf alle Daten zugreifen können). Also z.B. Col[0] wird angezeigt und Col[1] nicht. Trotzdem soll es möglich sein über item.subItem[0], ...[1] auch auf die Daten einer versteckten Column zugreigen zu können.

Kann ich in einer ListView Columns versecken und trotzdem auf die Daten zugreifen oder muss ich mir wirklich ne Tabelle extra speichern und die ListView kann ich dann nur zum anzeigen verwenden?

Grüße Oli

10.04.2007 - 14:50 Uhr

Vielen dank, mit App.DoEvents hat es funktioniert.

Grüße Oli

10.04.2007 - 14:34 Uhr

Hi,

ich habe folgendes Problem:

Ich hole mir über einen Dialog Daten. Nachdem der User diese Daten eingegeben hat, schließe ic den Dialog mit close() und starte mit den übergebenen Daten eine Datenbankabfrage. Diese kann durchaus etwas länger dauern. Nun wird der Dialog nicht komplett ausgeblendet sondern es bleiben Fragmente zu sehen bis die DB-Abfrage fertig ist.
Wie kann ich meinem Programm beibringen, dass es erst mit der DB-Abfrage beginnen soll, wenn der Dialog auch wirklich komplett geschlossen ist?

Viele Grüße,

Oli

04.04.2007 - 13:47 Uhr

Alles klar, danke. Eine numerische Umwandlung ist leider net möglich, da nach den Zahlen auch noch Buchstaben kommen...

Mach ich´s mit den Nullen

Grüße Oli...

04.04.2007 - 13:25 Uhr

Hi,

wenn man in GUI - Elementen automatisch sorteiren lässt, wird folgendes zurückgeliefert:

1
10
11
12
13
2
3
4...

Kann man das umstellen oder muss ich wirklich ne Sortierfunktion einbauen?

Grüße,
Oli

03.04.2007 - 14:43 Uhr

Hallo, und noch ne Frage hätte ich...

Kann man in einem DataGridView ne CheckBox einbauen?

Grüße Oli

03.04.2007 - 14:41 Uhr

Ok, des hab ich kapiert... =)

Danke...

03.04.2007 - 13:46 Uhr

Ah, Danke.

aha, d.h. wenn das Evant gefeuert wird ist die Zeile noch nicht im der ItemList und es wird damit "gewartet" bis es soweit ist?

03.04.2007 - 13:38 Uhr

Hi,

sorry, war ne falsche Methode

Hier richtig und dem oben beschriebenen komischen Verhalten


        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
                if (listView1.IsHandleCreated)
            {
                ListViewItem item = new ListViewItem();
                item = listView1.SelectedItems[0];

                textBox1.Text = item.SubItems[0].Text.ToString();
                textBox2.Text = item.SubItems[3].Text.ToString();
                textBox3.Text = item.SubItems[10].Text.ToString();
                textBox4.Text = item.SubItems[7].Text.ToString();
                textBox5.Text = item.SubItems[8].Text.ToString();
                textBox6.Text = item.SubItems[1].Text.ToString();
                textBox7.Text = item.SubItems[2].Text.ToString();
                textBox8.Text = item.SubItems[17].Text.ToString();
                textBox9.Text = item.SubItems[13].Text.ToString();
                textBox10.Text = item.SubItems[10].Text.ToString();
                textBox11.Text = item.SubItems[9].Text.ToString();
                textBox12.Text = item.SubItems[11].Text.ToString();
                textBox13.Text = item.SubItems[12].Text.ToString();
            }
         }

??? Was mach ich flasch??

03.04.2007 - 13:26 Uhr

Hi,

bin mit meinem Latein am Ende:


        private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
        {
            if (listView1.IsHandleCreated)
            {
                ListViewItem item = new ListViewItem();
                item = listView1.;
                textBox1.Text = item.SubItems[0].Text.ToString();
                textBox2.Text = item.SubItems[3].Text.ToString();
                textBox3.Text = item.SubItems[10].Text.ToString();
              }
          }

Damit möchte ich in den Textfeldern den Inhalt bestimmter spalten anzeigen, wenn der Benutzer auf die Zeile in der ListViet klickt.
Funzt beim ersten mal auch wunderbar, nur wenn ich dann eine andere Zeile auswähle, dann bekomme ich eine Exception:

IndexOutOfRangeException:
InvalidArgument=Value of '0' is not valid for 'index'.
Parameter name: index

Ich weiß nimmer weiter... Aus der Doku werde ich auch net wirklich schlau

Viele Grüße Oli

28.03.2007 - 16:45 Uhr

...oh... X(

Vielen Dank...

28.03.2007 - 16:36 Uhr

Hallo...

ich möchte über ein neues Fenster Daten übermittelt bekommen.



fenster.show();
string dates fenster.getDates();


Nur wartet das Programm nicht auf das Schließen des Fensters. Kann man das irgendwie erzwingen?

Viele Grüße

Oli

28.03.2007 - 16:31 Uhr

Hallo

vielen Dank, hat sich erledigt.

Grüße Oli

28.03.2007 - 12:57 Uhr

ups, sorry, war keine Absicht... X(

28.03.2007 - 12:25 Uhr

Hi,

ich habe eine DataView, als Source ein DataGrid. es befinden sich sehr viele Spalten im der Tabelle des Grids. Ich brauche aber nur 3. Bei ColumnMapping, kann ich ja aber immer nur eine Spalte ausblenden. Gibt´s da ne andere Möglichkeit, also quasi zu sagen zeig mir nur diese 3 Spalten an, anstatt alle nicht benötigten Spalten zu verstecken?

Danke Oli

28.03.2007 - 07:48 Uhr

Hallo,

ich hab mir gestern schon nen Wolf gesucht. Ich benötige dringend technische Icons, z.B. einen Biltz für Strom oder einen Wasserhahn für Wasserverbrauch, Ventilator usw... für eine Applikation.
Ich finde zwar wunderschöne Icons, die sind aber meistens nur auf den IT - BEreich bezogen. Hat jemand nen Tipp oder nen Link, wo man sowas herbekommt? Freeware wäre natürlich schon sehr nett, wenns gar ne anders geht, dann würd ich auch ein paar Euros locker machen.

Viele Grüße,

Oli

26.03.2007 - 14:24 Uhr

Hallo,

habe noch eine Frage zu dem Thema. Die Buttons sind nun angeordnet, aber wie kann ich nu den einzelnen Buttons eine Funktion zuweisen. Also wie wissen die Buttons was sie tun sollen, wenn sie gedrückt werden??

Danke Oli

26.03.2007 - 11:07 Uhr

Danke,

haut hin. Jetzt ist das Problem dass ich ja mehrere Buttons brauche. Ich weiß aber vorher nicht wie viele. Gibt es irgendwie ein Collection, in die man Buttons dynamisch reinwerfen kann??

Danke Oli

26.03.2007 - 10:49 Uhr

Hi,


                Button x = new Button(); 
                x.Name = areas[1].ToString();
                x.Show();
                Controls.Add(x);

Klappt auch nicht.... 🙁

26.03.2007 - 10:43 Uhr

Hallo,

ich bekomme aus einer Datenbank eine Tabelle mit Eigenschaften. nun möchte ich anhand dieser Tabelle Buttons anlegen (dynamisch).
Wie kann ich das machen? Wenn ich mir einen Button erzeuge wird der nicht angezeigt, weder mit show, noch mit dispose?
Kann mir da jemend einen Tipp geben?

Vielen Dank, Oli

26.03.2007 - 09:25 Uhr

Hallo nochmal,

ok, war auf der Leitung gesessen. Sortieren klappt ja (naja aber halt wie....) 1,10,2,20,21,22,3,4,5,6,7...... des kann ja net wahr sein oder??
Muss ich wirklich ne Sortiefunktion bauen? Dachte .net kann richtig sortieren....

Naja Danke nochmal.... Oli

26.03.2007 - 09:11 Uhr

Hallo Jürgen,

Original von juetho
Eine Datenmenge ist grundsätzlich unsortiert. Zusätzlich wird "erwartet", dass im SELECT-Befehl die ORDER BY-Klausel eingefügt werden kann.

Das ist mir klar nur habe ich eben das Problem nur auf stored Procedures einer Sybasee Datanbank zugreifen zu können. Und an diesen Prozeduren kann(darf) ich leider nichts ändern.

Ich habe jetzt die erste Tabelle in eine DataView gepackt, aber mit dem Sortieren komme ich immer noch nicht zurecht. DataView.sort funzt net und wenn ich auf die Columns zugreife kann ich nicht sortieren.

Sitz ich auf der Leitung?

Grüße Oli

26.03.2007 - 08:38 Uhr

Hallo,

ich erhalte ein DataSet mit zwei Tabellen aus einer Datanbankabfrage. Wie kann ich die erste Tabelle sortieren? (Erste Spalte enthählt ID#s - also sortiern nach ID in erster Spalte?)

Danke Oli

22.03.2007 - 11:00 Uhr

Hallo,

ich möchte eine maskierte Textbox erstellen, in der nur der Monat und das Jahr eingegeben werden kann.
Man soll ja in der Maskierungsoption "custom" wählen, aber wie kann ich dann die Parameter eingeben, dass eben keine Buchstaben zugelassen sind usw....??

Danke Oli

21.03.2007 - 15:33 Uhr

Vielen Dank!

Grüße Oli

21.03.2007 - 15:19 Uhr

Hallo,

ich lese über eine TextBox ein Datum ein. Ist es möglich, dem User schon bei der Eingabe zu verbieten, Buchstaben einzugeben und nach der 2. Zahl einen Punkt zu setzen usw???

Gibt es für solch ein Feature schon fertigen Quellcode?

Vielen Dank,

Oli

21.03.2007 - 15:14 Uhr

Vielen Dank an alle, hab´s geschafft

Grüße Oli

21.03.2007 - 14:34 Uhr

Ok, hab jetz ich mal ein MDIParent engelegt. Wie kann ich da denn nun die Fenster die ich brauche reinladen? Ich nehme an die heißen dann Childs..?..

Merci

21.03.2007 - 14:22 Uhr

Hallo,

ich habe ein Problem. Ich möchte in meinem Hauptfenster ein weiteres Fenster anzeigen lassen. (So wie z.B. bei Word, wenn man ein neues Dokument öffnet. Dann hat man ja auch ein inneres Fenster in dem man weiterarbeiten kann).

Im Moment habe ich es so gelöst, dass ich eine Klasse habe (Form) und von dieser ein Objekt erzeuge. Dann rufe ich es mit Show() auf. Da bekomme ich aber ein weiteres Fenster.

Kann mir da jemend helfen?

Danke Oli

20.03.2007 - 14:00 Uhr

Vielen Dank,

werde ich mir mal anschauen. Wieso findet man sowas net, wenn man googelt? ... naja

Grüße Oli

20.03.2007 - 13:36 Uhr

Hallo,

ich habe ein kleines Problem bei der Entwickung einer Applikation. Ich bekomme Daten von mehreren Messstellen aus einer Datenbank. Diese sollen nun über einem bestimmten Zeitraum in einem Liniendiagramm dargestellt werden. Also auf der x-Achse die Zeit und nun sollen auf der y-Achse eben mehrere Einheiten eingetragen sein.
Ich möchte es so, dass zum Beispiel für eine die Spannung eine rote y-Achse mit der Einheit Volt und die dazugehörige Linie in rot dargestellt wird. Für den Wasserverbrauch soll nun daneben eine blaue y-Achse dargestellt werden und die dazugehörige Linie soll blau dargestellt werden.... usw.
Die Graphikbibliotheken die ich kenne können aber nur eine Achse (max. zwei, dann ist eine rechts und eine links...).
Aber ich hab eben des Problem, dass mehr als zwei Messstellen ausgelesen und graphisch dargestellt werden sollen.
Kann mir da jemend nen Tipp zu einer vernünftigen Library geben. Wenn diese Library nicht kostenlos ist, soll das auch kein Problem darstellen.

Vielen Dank,

Oli

17.03.2006 - 11:29 Uhr

Hallo,

ich möchte auf eine Access Tabelle zugreifen und die Daten einer Spalte in ein String-Array speichern. Gibts da irgendwo ne vernünftige Anleitung, die auch ein Neuling versteht??

Danke Oli