Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C++CLI / VB .Net / .Net-Framework » editierbare liste (C++, Framework 2.0}

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
19.02.2006, 20:05 Uhr
Mr Evil



moin moin

ich hab hier ein programm am wickel, da hab ich in zwei listboxen files aufgelistet

so funktioniert alles praechtig, nur ich moechte ein eigenen "modus" aktivieren wo man dann die dateien in einer liste sieht die man wie einen editor "durchgehen" kann mit den pfeiltasten, und auch aendern kann

ne multiline textbox geht nicht, da ich die dateien ueber ne schleife nicht aufgelistet bekomm, und in der textbox kann ich nur selektieren nicht bearbeiten

jemand ne idee ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.02.2006, 22:09 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,

Zitat von Mr Evil:

ne multiline textbox geht nicht, da ich die dateien ueber ne schleife nicht aufgelistet bekomm,


1. Vorher in eine ArrayList einlesen und danach in die EditBox (StringArray) schreiben.
2. Listbox SE sind eigentlich nur für die Anzeige von Informationen gedacht.
3. Wie jedes SE verfügt auch die Listbox über die Methode .Controls.Add().
Mal rein theroretisch (was jetzt folgt ist nicht getestet):
Mann könnte eine EditBox zum ListBox SE hinzufügen und je nach Pos. des selectierten
Index die Editbox platzieren. Wird z.b. "Enter" gedrückt wird die Box eingeblendet.
Da die Höhe der TextBox abhängig von der Schrift ist muss die ListBox einen anderen
DrawMode als "Normal haben", sonst ist die Höhe der Texbox kaum anzupassen.
Nun braucht man noch ein Ereignis damit die TextBox wieder ausgeblendet wird ("Enter"
Ereignis der dynamischen Textbox muss implementiert werden).
Ansatz (ungetestet):

C++:
private void listBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
    if (e.KeyValue == 13)
    {
        txt.Name = "textBox1";
        txt.Width = listBox1.Width-4;
        txt.Height=listBox1.ItemHeight;
        int nTop=listBox1.SelectedIndex*13;
        // rein hypothetisch
        // genaue Werte müssten noch ermittelt werden
        txt.Top = nTop;
        listBox1.Controls.Add(txt);
    }
            
}


txt ist als TextBox deklariert. Die Ereignishandler für diese sind natürlich noch zu implementieren.
4. Ein Grid oder ListView etc. verwenden.
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 19.02.2006 um 22:10 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.02.2006, 06:53 Uhr
Mr Evil




Zitat:

1. Vorher in eine ArrayList einlesen und danach in die EditBox (StringArray) schreiben.


"vorher" einlesen kann ich nicht, da sich die liste dynamisch im programmlauf aendert, immer ein anderer inhalt ist sozusagen

Zitat:

2. Listbox SE sind eigentlich nur für die Anzeige von Informationen gedacht.


dafuer benutz ich sie ja, ich liste ueber diese boxen auf welche auswirkungen die aenderungen vom user auf die liste haben

Zitat:

3. Wie jedes SE verfügt auch die Listbox über die Methode .Controls.Add().
Mal rein theroretisch (was jetzt folgt ist nicht getestet):
Mann könnte eine EditBox zum ListBox SE hinzufügen und je nach Pos. des selectierten
Index die Editbox platzieren. Wird z.b. "Enter" gedrückt wird die Box eingeblendet.
Da die Höhe der TextBox abhängig von der Schrift ist muss die ListBox einen anderen
DrawMode als "Normal haben", sonst ist die Höhe der Texbox kaum anzupassen.
Nun braucht man noch ein Ereignis damit die TextBox wieder ausgeblendet wird ("Enter"
Ereignis der dynamischen Textbox muss implementiert werden).
Ansatz (ungetestet):

C++:
private void listBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
    if (e.KeyValue == 13)
    {
        txt.Name = "textBox1";
        txt.Width = listBox1.Width-4;
        txt.Height=listBox1.ItemHeight;
        int nTop=listBox1.SelectedIndex*13;
        // rein hypothetisch
        // genaue Werte müssten noch ermittelt werden
        txt.Top = nTop;
        listBox1.Controls.Add(txt);
    }
            
}


txt ist als TextBox deklariert. Die Ereignishandler für diese sind natürlich noch zu implementieren.


danke, list sich sehr interessant, werd ich mal testen !!

Zitat:

4. Ein Grid oder ListView etc. verwenden.


werd ich auch mal versuchen, evtl ist das effektiver

danke dir !! {=

dazuedit - nix funzt so wirklich, die position der textbox ist bei jeder datei anders, wenns bei einem eintrag passt, passts beim naechsten nicht mehr
zudem hab ich kein controls in der funktionsliste von der listbox
ein "grid" find cih nicht, nur DataGridView - und das listet mir nur die dateilaengen auf - keine namen und nichts editierbar
und ein ListView hab ich auch nicht, nur ein treeview - und das funktioniert gar nicht /=

evtl n label die loesung ? - ma rumspielen

Dieser Post wurde am 20.02.2006 um 07:40 Uhr von Mr Evil editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.02.2006, 09:02 Uhr
Mr Evil



habs jetzt so gemacht das die textbox sich so verhaellt wie du die idee hattest, nur das die position nicht verstellt wird

funzt soweit praechtig
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C++CLI / VB .Net / .Net-Framework ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: