Problem z dynamicznym tworzeniem przycisków w komponencie

0

Witam,
znalazłem skrypt który tworzy dynamicznie kilka przycisków:

    procedure TForm1.FormCreate(Sender: TObject);
    var

        i,n: Integer;

    begin

        n:=10;
        for i:=1 to n do

            with TButton.Create(self) do begin

                Width:=140;
                Height:=40;
                Left:=10;
                Top:=10+i*(Height+10);
                Caption:='Przycisk '+IntToStr(i);
                Parent:=self;
                Visible:=True;
                end;

    end; 

Wszystko fajnie tylko co mam zrobić żeby nie pokazywa mi tego na Formie tylko w Form1.ScrollBox1 ? Próbowałem w różny sposób zmienić tę linijkę:

with TButton.Create(self) do begin

i nic...

A i jak działa with?

0

Parent:=self; tu zmień

0

Dzięki,
sprawdzę czy działa i odpiszę. A jak działa with?

0

A with statement is a shorthand for referencing the fields of a record or the fields, properties, and methods of an object. The syntax of a with statement is

with obj do statement

or

with obj1, ..., objn do statement

where obj is an expression yielding a reference to a record, object instance, class instance, interface or class type (metaclass) instance, and statement is any simple or structured statement. Within statement, you can refer to fields, properties, and methods of obj using their identifiers alone--without qualifiers.

For example, given the declarations

type TDate = record
  Day: Integer;
  Month: Integer;
  Year: Integer;
end;
var OrderDate: TDate;

you could write the following with statement.

with OrderDate do
  if Month = 12 then
  begin
    Month := 1;
    Year := Year + 1;
  end
  else
    Month := Month + 1;

This is equivalent to

if OrderDate.Month = 12 then
begin
  OrderDate.Month := 1;
  OrderDate.Year := OrderDate.Year + 1;
end
else
  OrderDate.Month := OrderDate.Month + 1;

If the interpretation of obj involves indexing arrays or dereferencing pointers, these actions are performed once, before statement is executed. This makes with statements efficient as well as concise. It also means that assignments to a variable within statement cannot affect the interpretation of obj during the current execution of the with statement.

Each variable reference or method name in a with statement is interpreted, if possible, as a member of the specified object or record. If there is another variable or method of the same name that you want to access from the with statement, you need to prepend it with a qualifier, as in the following example.

with OrderDate do
  begin
    Year := Unit1.Year
    ...
  end;

When multiple objects or records appear after with, the entire statement is treated like a series of nested with statements. Thus

with obj1, obj2, ..., objn do statement

is equivalent to

with obj1 do
	  with obj2 do
	     ...
	     with objn do
	statement

In this case, each variable reference or method name in statement is interpreted, if possible, as a member of objn; otherwise it is interpreted, if possible, as a member of objn-1; and so forth. The same rule applies to interpreting the objs themselves, so that, for instance, if objn is a member of both obj1 and obj2, it is interpreted as obj2.objn.

1 użytkowników online, w tym zalogowanych: 0, gości: 1