Avatar billede anold Nybegynder
12. januar 2000 - 12:33 Der er 6 kommentarer og
1 løsning

Opdatering af billede

Hvem kan forklare mig hvorfor Shape6,7,8 ikke Bliver skjult(Hide) før jeg gemmer mit billede som en fil.



// sender billede fra forsiden(Form1) til form2 for udprintning
procedure TForm1.UdskrivForsideExecute(Sender: TObject);
begin
  Shape6.Hide;
  Shape7.Hide;
  Shape8.Hide;
  BitMap  := TBitmap.Create;
try
  BitMap.Width  := Shape1.Width;
  BitMap.Height := Shape1.Height;
  BitMap.Canvas.CopyRect(Rect(0,0,345,293), Form1.Canvas,
  Rect(Shape1.Left+1,Shape1.Top+1,Shape1.Left+345,Shape1.Top+293));
  BitMap.SaveToFile('c:\temp.bmp');
finally
  BitMap.Free;
end;
Form2.Image1.Picture.LoadFromFile('c:\temp.bmp');
Form2.ShowModal;
end;
Avatar billede sjensen Nybegynder
12. januar 2000 - 14:20 #1
prøv med shape.visible := false i stedet

Hide gemmer den bare, men hvis der ikke er noget at gemme dem bag, så...

sjensen
Avatar billede delphi Nybegynder
12. januar 2000 - 15:13 #2
Prøv en

  Application.ProcessMessages;

imellem
  Shape8.Hide
og
  Try.


NiP

(-og så brug da de to chars indryk, for sulen....).
Avatar billede delphi Nybegynder
12. januar 2000 - 15:17 #3
SJensen>  Lige et cut fra Help filen (Fra TControl.Hide):

[Cut]
Makes the control invisible.

procedure Hide;

Description

Call Hide to hide a control. Hide sets the Visible property of the control to False.


[/Cut]

Altså: "TControl.Hide" og "TControl.Visible := False;"

NiP
Avatar billede delphi Nybegynder
12. januar 2000 - 15:18 #4
Ups der manglede noget:

Altså: "TControl.Hide" og "TControl.Visible := False;" er effektivt det samme.

NiP
Avatar billede sjensen Nybegynder
12. januar 2000 - 15:30 #5
Jep, delphi, du har ret !! Som sædvanligt. Jeg mindes dog bare at jeg havde problemet med nogle tabsheets, men når jeg tænker efter virker visible ikke engang på dem.

Men.. tilbage til anold:

På dit eks. ser det ud som om du bruger en shape som ramme til et billede (image). Hvis det er rigtigt så tror jeg problemet er at shaperne godt nok bliver gemt men det gør imagerne ikke. (dansk-engelsk, herligt ik ?)

prøv at hide imagerne også

sjensen
Avatar billede delphi Nybegynder
12. januar 2000 - 16:24 #6
Hvis jeg husker/tænker rigtigt, så bruger han nogle (8) små sorte firkanter (Shapes) i hvert hjørne og i de fire midt'er på et image.  Disse Shapes bruger han til at kunne resize imagerne. (Jo det lyder herligt...)
Det han vist prøver, er at gemme hans billede (dvs. hans form med et eller flere images på) i et midlertidigt Bitmap, som så gemmes.  Shapesne skal derfor fjernes (hides) inden bitmappen gemmes. 

Jeg tror bare, at problemet er, at Windows ikke når at fjerne shapesne, dvs. invalidate og re-painte hans form/images, idet han laver alt dette inde i den samme metode.  Ved at kalde hide metoderne, har han egentligt bare postet nogle messages til windows, om at der er en form der skal re-paintes engang ved lejlighed.  Ved at indsætte Application.ProcessMessages tvinger man Windows til lige at gennemgå alle de postede messages inden metoden går vidre.

Som de siger i reklamerne: "Prøv det!"

NiP
Avatar billede sjensen Nybegynder
12. januar 2000 - 16:31 #7
Delphi>Ja hvis det er sådan som skriver at shaperne er små mærker rundt om imagerne, så har du givetvis ret. Processmessages burde være løsningen.

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