[ utnapistin @ 21.05.2005. 02:31 ] @
| Trebaju mi dve stvari u Delphiju 6.
Prvo da li postoji neka standardna funkcija ili procedura za tip Timage kojim bi obrisao sadrzaj slike? Tacnije , na primer imam dugme koje bi klikom brisalo sadrzaj recimo Image1 , tako da ona postane transparentna...
A drugo , kako da zaokruzim promenljivu tipa float na dve decimale?
To mi treba prilikom prikazivanja rezultata neke operacije koja izracunavanjem daje realan broj , i zelim da ga prikazem zaokruzenog na dve decimale u polju npr edit1... |
[ Srki_82 @ 21.05.2005. 03:31 ] @
Pretpostavljam da si TransparentColor property postavio na boju koja bi trebalo da bude transparentna i Transparent na True kako bi transparencija radila. Kada hoces da obrises sliku samo iscrtas po celoj povrsini (rectangle(0, 0, width, heigth)) canvasa slike pravougaonik koji ima boju kao TransparentColor property.
Za zaokruzivanje koristi RoundTo samo pazi jer koristi Banker’s rounding:
RoundTo(1234567, 3) 1234000
RoundTo(1.234, -2) 1.23
RoundTo(1.235, -2) 1.24
RoundTo(1.245, -2) 1.24
Pogledaj i SetRoundMode funkciju.
[ utnapistin @ 21.05.2005. 14:26 ] @
Hvala puno na pomoci!
[ DelphiBoy @ 23.05.2005. 13:13 ] @
Najlaksi nacin da oslobodis sliku iz memorije je
Image1.Picture:=nil;
, tako da je (ako si vec postavio svojstvo Image1.Transparent=true) postala transparentna.
Sto se tice zaokruzivanja broja na dve decimale, mozes koristiti RoundTo, kao sto je Srdjan rekao, a mozda ti i ova funkcija nesto pomogne:
function RoundN(x: Extended; d: Integer): Extended;
// RoundN(123.456, 0) = 123.00
// RoundN(123.456, 2) = 123.46
// RoundN(123456, -3) = 123000
const
t: array [0..12] of int64 = (1, 10, 100, 1000, 10000, 100000,
1000000, 10000000, 100000000, 1000000000, 10000000000,
100000000000, 1000000000000);
begin
if Abs(d) > 12 then
raise ERangeError.Create('RoundN: Value must be in -12..12');
if d = 0 then
Result := Int(x) + Int(Frac(x) * 2)
else if d > 0 then begin
x := x * t[d];
Result := (Int(x) + Int(Frac(x) * 2)) / t[d];
end else begin // d < 0
x := x / t[-d];
Result := (Int(x) + Int(Frac(x) * 2)) * t[-d];
end;
end;
[ bancika @ 23.05.2005. 15:45 ] @
umesto ovog niza stepena desetke mozes koristiti power funkciju iz Math unita. jeste da je brze ovako pre-izracunato, ali opet :)
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.