Avatar billede jaweni Nybegynder
16. februar 2007 - 12:22 Der er 5 kommentarer og
1 løsning

Resize elementer (Delphi2)

Jeg vil gerne kunne resize skærmbilledet;
men knapper, edit-felter, osv. skal følge
med i dimensionerne og placering på formen.

Hvordan tilgår man alle elementer på en form,
f.x. i en For..to - løkke?
Avatar billede a_nor Nybegynder
16. februar 2007 - 12:58 #1
for i:= 0 to form1.ComponentCount-1 do
  if form1.Components[i].name = 'x' then
Avatar billede a_nor Nybegynder
16. februar 2007 - 13:12 #2
(Ovenstående fungerer i Delphi 3).

Iøvrigt kan det være nødvendigt med følgende hvis brugeren har valgt LargeFonts i sin windows-opsætning:

  FontFactor  := label1.font.PixelsPerInch/96;
    { for at kunne justere billedstørrelser afhængig af windows' font valg}
    { LargeFonts vil ellers ødelægge de valgte screenstørrelser          }

i FormCreate placeres så

  Height := round(height * FontFactor);
  Width  := round(width  * FontFactor);
Avatar billede hrc Mester
16. februar 2007 - 14:08 #3
Min umiddelbare tanke er: Opgradér!

I øvrigt er det noget skod at spørge på komponent-navne. Det er dømt til at fejle! Hvis du har kaldt knappen "Button1" og en klogere (!) programmør omdøber den til et mere sigende navn, eksempelvis "btnDelteRecord" så har vi problemet.

Den meget smartere er:
  if form1.Components[i] = Button1 then ...

Hvis den omdøbes kan programmet ikke oversættes og fejlen vil blive fanget.
Avatar billede a_nor Nybegynder
16. februar 2007 - 14:46 #4
hrc - men så kan han jo lige så godt løbe alle kompnenterne igennem "manuelt" ?
Iøvrigt kan han vel også i Delphi 2 bruge følgende som fungere i D3  ??:
  if Components[i] is tLabel then
    begin
    tLabel(Components[i]).top := 33*i;
    tlabel(components[i]).font.color:=  clRed;
    end;
Avatar billede pidgeot Nybegynder
16. februar 2007 - 18:28 #5
Er der ikke Anchors i Delphi 2? Det er da sådan noget man bruger dem til (Slå alle til hvis komponenterne skal ændre størrelse, slå alle fra hvis du bare skal bevare den relative afstand).
Avatar billede hrc Mester
17. februar 2007 - 12:13 #6
pidgeot: Anchors kom i D5 eller D6.

a_nor: Det er klart at man ikke behøver gennemløbe Components-listen. Det letteste var nok at placere komponenterne på en TPanel og via dens OnResize justere dem:

var
  Panel : TPanel;
begin
  Panel := (Sender as TPanel);

  // Hvis den skal højrestilles:
  Button.Left := Panel.Width - Button.Width - 8;

  // Hvis bredden skal justeres:
  Button.Width := Panel.Width - Button.Left - 8;
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

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