dynamisches erzeugen von VCL Objekten extrem langsam. XE5



  • Ich habe eine TScrollBox hergenommen und erzeuge mir darin eine große Zahl TEdit-Objekte (Ziel: flexibleres "TStringGrid"). Das ganze ist aber extrem langsam, gibt es da einen Trick?

    P.S. : Setze die ScrollBox schon auf Visible=false bevor ich mit den Edit Komponenten anfange und danach wieder auf true, sonst sieht man die Objekte Teil für Teil auftauchen.



  • Zu wenig Informationen. Code wäre gut.



  • DynamicArray <TPanel*> Panel;
    DynamicArray <TEdit*> Edit;
    
    Box->Visible=false;
    
    Panel.Length=n_Zeilen; // 100
    Edit.Length=n_Reihen; // 40
    
    for (int j=0; j<n_Zeilen; j++)
    {
      Panel[j]=new TPanel(Application);
      Panel[j]->Parent=Box;
      Panel[j]->DoubleBuffered=true;
      Panel[j]->Left=1;
      Panel[j]->Color=clWhite;
      Panel[j]->Width = 800  ;
      Panel[j]->Height = 20 ;
      Panel[j]->Tag=j;
    
      Panel[j]->Top = 1*Panel[j]->Height*j;
    
     for (int i=0; i<n_Reihen; i++)
     {
      Edit[i]=new TEdit(Application);
    
      Edit[i]->Parent=Panel[j];
      Edit[i]->DoubleBuffered=true;
      Edit[i]->Left=1*20*i;
      Edit[i]->Top=1;
      Edit[i]->ParentColor=true;
      Edit[i]->Width = 20 ;
      Edit[i]->Height = 20 ;
      Edit[i]->Tag=i;
      Edit[i]->OnClick = Edit1Click;
     }
    
    }
    
    Box->Visible=true;
    
    }
    


  • Pippo_ schrieb:

    Das ganze ist aber extrem langsam, gibt es da einen Trick?

    Beschränke die Anzahl der Editfelder auf die sichtbaren...

    Die Geschwindigkeit als solches ist für diese Anzahl Oberflächenobjekte völlig in Ordnung.



  • Hi,

    Warum nimmst kein Stringgrid?

    Gruß Mümmel


Anmelden zum Antworten