Avatar billede jimgordon Nybegynder
02. december 2004 - 09:39 Der er 8 kommentarer og
1 løsning

Loop kontroller

Her en masse (>30) textBox komponenter på et faneblad (fordelt i flere paneller). Hvordan kan man loop alle textBoxe igennem, netop på det faneblad (tabPage) . Skal sætte alle properties til textBox.Text = "".
Det må kunne loopes på en smart måde, istdetfor for dræberen med at skrive dem alle op under hinanden i koden.
Avatar billede arne_v Ekspert
02. december 2004 - 09:46 #1
Du kan vel hente alle kontrolle i Controls property og så loope
igennem dem og teste på type og/elle rnavn og caste og gøre
noget ved dem hvis de matcher et kriterie.
Avatar billede lemon Nybegynder
02. december 2004 - 09:47 #2
De ligger vel alle sammen i Controls for det givne faneblad, så du kan eks. for hvert faneblad:

for(int index = 0; index < faneblad.Controls.Count; index++)
{
  if(faneblad.Controls[index].GetType().Name == "TextBox")
    ((TextBox)faneblad.Controls[index]).Text = "";
}

eller hvis Controls bruger Enum (kan jeg nemlig ikke huske:

IDictionaryEnumerator ide = faneblad.Controls.GetEnumerator();
while(ide.MoveNext())
{
  if(((Control)ide.Value).GetType().Name == "TextBox")
    ((TextBox)ide.Value).Text = "";
}
Avatar billede kalp Novice
02. december 2004 - 09:56 #3
kan du ikke vælge search/replace ?
Avatar billede jimgordon Nybegynder
02. december 2004 - 11:03 #4
ok, takker, der er måden, man skal bare have præcis den container kontroller ligger i.
Faneblad med paneler med textboxes, skal loop paneler.


Tryk for point
Avatar billede kalp Novice
02. december 2004 - 15:13 #5
me?
Avatar billede arne_v Ekspert
09. december 2004 - 21:23 #6
næppe
Avatar billede kalp Novice
10. december 2004 - 19:12 #7
tjah... ved ikke om du kender jDeveloper og der er det muligt hvis man gør det rigtigt... så at sige næppe betyder vel du synes det helt ud i skoven... og det er det NÆPPE... så hvad med du selv ligger et svar istedet for en kommentar??
Avatar billede arne_v Ekspert
12. december 2004 - 22:14 #8
kalp>

Som både lemon og mig har læst spørgsmålet, så skal det gøres runtime - ikke i IDE'en.

I java ville det svare til:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MultiClear extends JFrame implements ActionListener {
    private JTextField tf1;
    private JTextField tf2;
    private JTextField tf3;
    private JTextField tf4;
    private JTextField tf5;
    private JTextField tf6;
    private JPanel alltf;
    private JButton clearall;

    public MultiClear() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        tf1 = new JTextField();
        tf2 = new JTextField();
        tf3 = new JTextField();
        tf4 = new JTextField();
        tf5 = new JTextField();
        tf6 = new JTextField();
        alltf = new JPanel();
        alltf.setLayout(new GridLayout(2, 3));
        alltf.add(tf1);
        alltf.add(tf2);
        alltf.add(tf3);
        alltf.add(tf4);
        alltf.add(tf5);
        alltf.add(tf6);
        clearall = new JButton("Clear all");
        clearall.addActionListener(this);
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(alltf, BorderLayout.CENTER);
        getContentPane().add(clearall, BorderLayout.SOUTH);
        pack();
    }

    public void actionPerformed(ActionEvent ev) {
        Component[] comps = alltf.getComponents();
        for(int i = 0; i < comps.length; i++) {
            if(comps[i] instanceof JTextField) {
                ((JTextField)comps[i]).setText("");
            }
        }
    }

    public static void main(String[] args) {
        MultiClear f = new MultiClear();
        f.setVisible(true);
    }
}
Avatar billede arne_v Ekspert
12. december 2004 - 22:16 #9
Jeg kan godt ligge et svar, men måske synes jimgordon bedre om lemons
kommentar, fordi den indeholdt konkret kode.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester