Newsgroup: it.comp.lang.delphi
Titolo: MIgliorare il codice

Salve,
qualcuno puň aiutarmi vorrei rendere piů snella una mia procedura che ho
scritto qualcuno puň aiutarmi???
di seguito metto la procedura:
procedure TfFamily.AddPanels(Columns: Integer);
const
  PanelHeigth = 768;
  PanelWidth = 230;
var
  J: Integer;
  procedure CreatePanel(const T, H, L: Integer; const Text: TCaption);
  var P: TPanel;
  begin
    P := TPanel.Create(nil);
    P.Parent := scFamily{scFamily = TScrollBox- align = alClient};
    P.Height := H;
    P.Left := L;
    P.Top := T;
    P.Caption := Text;
  end;
begin
  for J := 0 to Columns - 1 do
  case J of
    0: CreatePanel(0, PanelHeigth, 0, '1');
    1: begin
         CreatePanel(0, PanelHeigth div 2, PanelWidth, '2');
         CreatePanel(PanelHeigth div 2, PanelHeigth div 2, PanelWidth,
'3');
       end;
    2: begin
         CreatePanel(0, PanelHeigth div 4, 460, '4');
         CreatePanel(PanelHeigth div 4, PanelHeigth div 4, PanelWidth *
J, '5');
         CreatePanel(PanelHeigth div 2, PanelHeigth div 4, PanelWidth *
J, '6');
         CreatePanel(PanelHeigth - (PanelHeigth div 4), PanelHeigth div
4, PanelWidth * J, '7');
       end;
    3: begin
         CreatePanel(0, PanelHeigth div 8, PanelWidth * J, '8');
         CreatePanel(PanelHeigth div 8, PanelHeigth div 8, PanelWidth *
J, '9');
         CreatePanel(PanelHeigth div 4, PanelHeigth div 8, PanelWidth *
J, '10');
         CreatePanel((PanelHeigth div 2) - (PanelHeigth div 8),
PanelHeigth div 8, PanelWidth * J, '11');
         CreatePanel(PanelHeigth div 2, PanelHeigth div 8, PanelWidth *
J, '12');
         CreatePanel((PanelHeigth div 2) + (PanelHeigth div 8),
PanelHeigth div 8, PanelWidth * J, '13');
         CreatePanel(PanelHeigth - (PanelHeigth div 4), PanelHeigth div
8, PanelWidth * J, '14');
         CreatePanel(PanelHeigth - (PanelHeigth div 8), PanelHeigth div
8, PanelWidth * J, '15');
       end;
    4: begin
         CreatePanel(0, PanelHeigth div 16, PanelWidth * J, '16');
         CreatePanel(PanelHeigth div 16, PanelHeigth div 16, PanelWidth
* J, '17');
         CreatePanel(PanelHeigth div 8, PanelHeigth div 16, PanelWidth *
J, '18');
         CreatePanel((PanelHeigth div 8) + (PanelHeigth div 16),
PanelHeigth div 16, PanelWidth * J, '19');
         CreatePanel(PanelHeigth div 4, PanelHeigth div 16, PanelWidth *
J, '20');
         CreatePanel((PanelHeigth div 4) + (PanelHeigth div 16),
PanelHeigth div 16, PanelWidth * J, '21');
         CreatePanel((PanelHeigth div 4) + (PanelHeigth div 8),
PanelHeigth div 16, PanelWidth * J, '22');
         CreatePanel((PanelHeigth div 2) - (PanelHeigth div 16),
PanelHeigth div 16, PanelWidth * J, '23');
         CreatePanel(PanelHeigth div 2, PanelHeigth div 16, PanelWidth *
J, '24');
         CreatePanel((PanelHeigth div 2) + (PanelHeigth div 16),
PanelHeigth div 16, PanelWidth * J, '25');
         CreatePanel((PanelHeigth div 2) + (PanelHeigth div 8),
PanelHeigth div 16, PanelWidth * J, '26');
         CreatePanel((PanelHeigth div 2) + (PanelHeigth div 8) +
(PanelHeigth div 16), PanelHeigth div 16, PanelWidth * J, '27');
         CreatePanel(PanelHeigth  - (PanelHeigth div 4), PanelHeigth div
16, PanelWidth * J, '28');
         CreatePanel((PanelHeigth div 2) + (PanelHeigth div 4) +
(PanelHeigth div 16), PanelHeigth div 16, PanelWidth * J, '29');
         CreatePanel(PanelHeigth  - (PanelHeigth div 8), PanelHeigth div
16, PanelWidth * J, '30');
         CreatePanel(PanelHeigth  - (PanelHeigth div 16), PanelHeigth
div 16, PanelWidth * J, '31');
       end;
  else
    Continue
  end;
end;
Alfio Alioscia Alessi
Vorrei il corpo per comprendere la mente, carpirei il cuore per toccarne
l'anima!
ICQ: #136228398
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
prova
procedure TForm1.AddPanels(Columns: Integer);
const
   PanelHeigth = 768;
   PanelWidth = 230;
var
   J, k, l: Integer;
   alto, delta  : integer;
   incrementa   : integer;
   procedure CreatePanel(const T, H, L: Integer; const Text: TCaption);
   var P: TPanel;
   begin
     P := TPanel.Create(nil);
     P.Parent := Form1;//scFamily{scFamily = TScrollBox- align = alClient};
     P.Height := H;
     P.Left := L;
     P.Top := T;
     P.Caption := Text;
   end;
begin
   incrementa := 1;
   for j := 1 to Columns do
   begin
     k := Round(exp((j-1)*ln(2)));
     alto := 0;
     for l := 1 to k do
     begin
       CreatePanel(alto, PanelHeigth div k, PanelWidth *(J-1), 
inttostr(incrementa));
       alto := alto + PanelHeigth div k;
       incrementa := incrementa+1;
     end;
   end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
AddPanels(4)
end;
ciao
-- 
------------------------------------
Per rispondere in privato togliere:
1975

      k := Round(exp((j-1)*ln(2)));
Da che cilindro l'hai tirata fuori questa chicca!!
Spiegala a noi comuni mortali che a scuola litigavamo con i logaritmi :)
--
Jax

Jax ha scritto:

Per leggetlo č meglio usre il courier o un font non proporzionale (ln = 
logaritmo naturale in base e)
Tu vuoi fare: a^c
Sistema matematico in due equazioni (inventato in modo quasi forzato):
a^c = b
Log B  = C
    a
La seconda in base alla definizione vuol dire anche a^c=b (quindi 
l'ueguaglianza e' accettata)
Risolvi il sistema partendo dalla seconda
  Log B  = C
     a
  Ln (b)/ Ln (a) = C
  Ln (b) = c*ln(a)
In base alla definizione di logaritmo ottieni b=e^(c*ln(a))
sostituisci alla prima equazione.
ciao
p.s. In caso di errori e' colpa degli sbagli.
-- 
------------------------------------
Per rispondere in privato togliere:
ADD1975