Results 1 to 7 of 7

Thread: Teken probleem

  1. #1
    Member Duiker's Avatar
    Join Date
    May 2020
    Location
    Hamont-Achel (Belgie), Pattaya (Thailand)
    Posts
    55

    Teken probleem

    Na veel zoeken / proberen toch maar de vraag op dit forum stellen.

    Ik heb 2 beeldschermen van verschillend formaat. Ik wil een horizontale balk laten zien. Die balk moet de breedte van het actuele scherm vullen. Dus scherm 1 of scherm 2.

    Het probleem is dat als ik Image1.Width een lengte geef met een getal, dan wordt alles goed getekend op beide schermen. (Getal is dan wel afhankelijk van de scherm breedte)
    Als Image1.Width afhankelijk wordt gemaakt van MainForm.ClientWidth dan wordt de balk veel te kort getekend op scherm 2. Scherm 1 gaat wel goed.
    Bij het narekenen van Image1 met Label2.Caption := 'Image1.Width = ' + IntTostr(Image1.Width); dan blijkt de image toch de goede lengte te hebben.

    Hoe kan ik er voor zorgen dat de balk altijd beeld breedte gevuld word op beide schermen? (Scherm 1 of scherm 2)
    Code:
    procedure TMainForm.FormPaint(Sender: TObject);
    var A : integer;
    begin
      A := MainForm.ClientWidth;
      Label1.Caption := 'MainForm.ClientWidth = ' + IntToStr(A);
    
      Image1.Left := 0;
      Image1.Top := 100;
      Image1.Width := A;
      Image1.Height := 100;
    
      Image1.Canvas.Pen.Color := clRed;
      Image1.Canvas.Brush.Color := clYellow;
      Image1.canvas.Rectangle(0, 0, Image1.Width - 1, Image1.Height - 1);
    
      Label2.Caption := 'Image1.Width = ' + IntTostr(Image1.Width);
    end;

  2. #2
    Wat is dan het verschil tussen Clientwidth en het getal waarmee het wél werkt? Is dat verschil te verklaren (en eventueel te corrigeren). Hoe kwam je aan dat getal?
    1+1=b

  3. #3
    Member Duiker's Avatar
    Join Date
    May 2020
    Location
    Hamont-Achel (Belgie), Pattaya (Thailand)
    Posts
    55
    Precies dat is nu het probleem. Als ik ClientWidth zichtbaar maak als string, dan geeft dat een getal. Vul ik dat zelfde getal in als image1.width dan werkt het wel. Er zou geen verschil mogen zijn.

  4. #4
    Je hebt het over breedte van het scherm, en de clientwidth van je form.. Ook zie ik dat je tekent op een image, is daar een reden voor? Waarom geen paintbox, of direct op het form canvas? Je zou ook de breedte van de desktop kunnen opvragen met screen.DesktopWidth

  5. #5
    Ben je nog van plan iets anders dan een 'solid' image te gebruiken? Want anders kun je natuurlijk ook een stretchimage als align alTop instellen. Of gewoon een gekleurde panel.

    Is je tweede scherm overigens ook gewoon op 96dpi ingesteld (net als je eerste scherm)?

  6. #6
    Member Duiker's Avatar
    Join Date
    May 2020
    Location
    Hamont-Achel (Belgie), Pattaya (Thailand)
    Posts
    55
    Het probleem is opgelost door een paintbox te gebruiken. Eigenlijk heb ik altijd een image gebruikt om op te tekenen. Tot nu toe kon ik daar alles mee wat ik wilde. Tot vandaag dus. Bedankt voor het meedenken.

  7. #7
    J.W. de Bokx
    Join Date
    Jun 2007
    Location
    Pijnacker
    Posts
    82
    Toen ik de titel zag dacht ik dat je een tekentang nodig had....
    Dus voor die vervelende beestjes....

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •