Avatar billede tknudsen Nybegynder
10. juli 2000 - 10:58 Der er 8 kommentarer og
2 løsninger

canvas i frame eller scrollbox

Jeg søger info om hvorvidt jeg kan tegne i en frame eller en scrollbox.

Årsagen er at tegnes der undenfor framen/scrollboxen skal dennes scrollbarer blive synlige/enabled så der kan scrolles i feks en graf.
Avatar billede tknudsen Nybegynder
10. juli 2000 - 11:42 #1
ohhh - nu har jeg puttet en PaintBox ind i en ScrollBox. Paintboxen kan være bredere end scrollboxen og derfor skal det som er tegnet i paintboxens canvas opdateres hver gang der trykkes på scrollbaren, men denne event kan jeg ikke "fange" ?!!
Avatar billede borrisholt Novice
10. juli 2000 - 12:19 #2
Var det ikke en ide bare at sætte to alm ScrollBar på din form og så i deres OnChange event tegen din PaintBox op ?

Jens B
Avatar billede sjensen Nybegynder
10. juli 2000 - 12:34 #3
Når du trykker på/hiver i en scrollbar sender windows (delphi) en message. Hvilken kan jeg ikke på stående fod huske, men den eneste måde at fange eventen på er at "grabbe" denne message, evt. "override" den i dit program.

På den måde kan du få besked på at scrollboksen er ændret og udføre den repaint at dit image/picture du vil.

prøv evt. at checke for eksempler på

http://www.undu.com/articles
Avatar billede tknudsen Nybegynder
10. juli 2000 - 12:44 #4
sjensen >> jeg kender en smule til WM - bare ikke i delphi - hvordan linker jeg en wmessage til en event procedure ?
Avatar billede borrisholt Novice
10. juli 2000 - 12:47 #5
Det gør du sådan her  :


unit ClearEllipseMain;
interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TForm1 = class(TForm)
  private
    procedure WMNCHitTest( var Msg : TWMNCHitTest );  message wm_NCHitTest;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.WMNCHitTest(var Msg: TWMNCHitTest);
begin
  inherited;
  if( htClient = Msg.Result )then
  Msg.Result := htCaption;
end;

end.

Jens B
Avatar billede tknudsen Nybegynder
10. juli 2000 - 12:50 #6
aha - men hvordan finder jeg ud af hvad OnChange-wm'en på scrollbaren i scrollboxen hedder ?
Avatar billede sjensen Nybegynder
10. juli 2000 - 13:08 #7
Her er en kopi af hjælpeteksten fra Win32.hlp vedr. scrollbars:

The scroll bar sends WM_HSCROLL and WM_VSCROLL messages to the window procedure whenever the user clicks the scroll bar or drags the scroll box. The low-order words of WM_VSCROLL and WM_HSCROLL each contain a notification message that indicates the direction and magnitude of the scrolling action.

When the WM_HSCROLL and WM_VSCROLL messages are processed, the scroll bar notification message is examined and the scrolling increment is calculated. After the increment is applied to the current scrolling position, the window is scrolled to the new position by using the ScrollWindowEx function, and the position of the scroll box is adjusted by using the SetScrollInfo function. For operating system versions earlier than 4.0, use the SetScrollPos function to adjust the scroll box position.

After a window is scrolled, part of its client area is made invalid. To ensure that the invalid region is updated, the UpdateWindow function is used to generate a WM_PAINT message.
Avatar billede sjensen Nybegynder
10. juli 2000 - 13:11 #8
Så af hjælpen kan du læse at du rent faktisk kan nøjes med at se efter WM_paint messagen, og det undrer mig derfor at dit image ikke reagerer på det i din scrollbox. Det burde faktisk selv reagere på wm_paint og gentegne sig selv inden for den synlige del, men hvis det ikke gør kan du altså, sådan som borrisholt har forklaret med hvordan du grabber messagen, bruge wm_paint i stedet og i denne selv gentegne billedet.
Avatar billede tknudsen Nybegynder
10. juli 2000 - 13:25 #9
det er jo skidelet  :)

tak
Avatar billede tknudsen Nybegynder
10. juli 2000 - 13:26 #10
jeg prøver lige at acceptere - igen...
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
Kategori
Kurser inden for grundlæggende programmering

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