Veja esta Procedure

Delphi

14/11/2003

Procedure TFDigSoci.ZeraCombos;
var i,j:Integer;
MatCombo:Array[1..22] of TComboBox;
begin
j:=1;
For i := 0 to ComponentCount -1 do
if Components[i].ClassName=´TComboBox´ then begin
MatCombo[j]:=Components[i].;//como encher esta matriz
inc(j);
end;
//Obs.: tenho 22 combos com os nomes CB1 até CB22.
end;

Preciso encher a matriz com os combobox, alguém sabe como?


Pedro Dias

Pedro Dias

Curtidas 0

Respostas

Rafael Heise

Rafael Heise

14/11/2003

arrume sua função dessa forma:
Procedure TFDigSoci.ZeraCombos; 
  var i,j:Integer; 
    MatCombo:Array[1..22] of TComboBox; 
begin 
  j:=1; 
  For i := 0 to ControlCount -1 do 
    if Controls[i] is TComboBox then 
    begin 
      MatCombo[j] := Controls[i];
      inc(j); 
    end; 



GOSTEI 0
Pedro Dias

Pedro Dias

14/11/2003

Deu o seguinte erro


[Error] UDigSoci.pas(124): Incompatible types: ´TComboBox´ and ´TControl´


GOSTEI 0
Marcelo Saviski

Marcelo Saviski

14/11/2003

MatCombo[j] := TComboBox(Controls[i]); 



GOSTEI 0
Rafael Heise

Rafael Heise

14/11/2003

MatCombo[j] := (Controls[i] as TComboBox); 


Eu pessoalmente prefiro dessa forma por causa de umas coisas que podem acontecer uns erros e talz... masss vai de cada um!


GOSTEI 0
Beppe

Beppe

14/11/2003

MatCombo[j] := (Controls[i] as TComboBox); 
Eu pessoalmente prefiro dessa forma por causa de umas coisas que podem acontecer uns erros e talz... masss vai de cada um!


O operador [b:c890d9c745]as[/b:c890d9c745] é bom pra garantir que um objeto é daquela classe(ou então uma exceção é criada). Mas neste caso, o [b:c890d9c745]is[/b:c890d9c745] te diz: ´É garantido pode passar!´. Então uma simples cast dá conta do recado.


GOSTEI 0
POSTAR