hex&bin

0

mam taki kod

procedure TForm1.okno4Change(Sender: TObject);

var
HexColor : string;
RValue, GValue, BValue: Integer;
begin

if Length(okno4.Text)=7
then
label1.Caption:=okno4.Text;
HexColor := label1.Caption ; *kolor w Hexie
Delete(HexColor,1,1); *usuwamy znak #
RValue := StrToInt('$' + Copy(HexColor,1,2)); *skladowa R
GValue := StrToInt('$' + Copy(HexColor,3,2)); *skladowa G
BValue := StrToInt('$' + Copy(HexColor,5,2)); //skladowa B
okno1.Text := inttostr(RValue);
okno2.Text := inttostr(GValue);
okno3.Text := inttostr(BValue);
end;

gdzie okno = edit tylko mam problem

jak wpisze
label1.Caption:=okno4.Text;
HexColor := label1.Caption ;
to moge wpisywac w hexie ale nie moge cofnąć tego co mam w edicie wpisane bo
mi wyskakuje bład ... convert error
jak zrobie ten sam kod ale bez labela typu
HexColor := okno4.text ;
to jak wpisze cokolwiek wyskakuje mi ten sam blad
i jak zrobic zeby zeby czyscił edita jak wpisze jakies bzdury typu
#asdglkj albo #fffffg bo tesh mi blad wyskakuje

---= pozdrawiam Oskar =- (delphi 6 GG:2792614)

0

kontroluj konwersje :

try
okno1.Text := inttostr(RValue);
except
ShowMessage('Zmienna RValue nie jest liczba !');

end;

0

oj Fojcik tym razem to ja ciebie musze poprawic :-)
cala procedurka wygladala by chyba tak:

procedure TForm1.okno4Change(Sender: TObject);
var
HexColor : string;
RValue, GValue, BValue, DlaBledu: Integer;
begin

if Length(okno4.Text)=7 then
begin
label1.Caption:=okno4.Text;
HexColor := label1.Caption ; *kolor w Hexie
Delete(HexColor,1,1); *usuwamy znak #

try
DlaBledu := StrToInt('$' + HexColor );
except
ShowMessage('Nie wpisales koloru w Hexie !');
Exit;
end;

RValue := StrToInt('$' + Copy(HexColor,1,2) ); *skladowa R
BValue := StrToInt('$' + Copy(HexColor,3,2) ); *skladowa B
GValue := StrToInt('$' + Copy(HexColor,5,2) ); //skladowa G

okno1.Text := inttostr(RValue);
okno2.Text := inttostr(GValue);
okno3.Text := inttostr(BValue);
end;

end;

nie jestem pewien czy to wsio jest dobrze ale wazne ze dziala :-)

--
-=[ Delphi 3, 6 ]=-
-=-==[ LKS ]==-=-

0

a mógłbys cos znaleŹĆ mniej uciazliwego zeby np po przekroczeniu zakresu hex kasowalo wszystkie edity ???---= pozdrawiam Oskar =- (delphi 6 GG:2792614)

0

w procedurze onKeyPress sprawdzaj czy przypadkiem do edita nie sa wpisywane cyfry badz litery inne od:
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,a,b,c,d,e,f

jezeli jest wpisywana inna (np. "r")kasuj zawartosc wszystkich editow :-) :-)

--
-=-=[ Delphi 3, 6 ]=-=-
-=-=-==[ LKS ]==-=-=-
-=[ [email protected] ]=-

0

zapomnialem jeszcze o znaku "#" :-)---=-=[ Delphi 3, 6 ]=-=-
-=-=-==[ LKS ]==-=-=-
-=[ [email protected] ]=-

0

tia tylko jak to zrobic
---= pozdrawiam Oskar =- (delphi 6 GG:2792614)

0

sorki pomylielm sie :-) powinno byc w procedurze onKeyDown
chyba tak to trza zrobic :-)

procedure TForm1.okno4KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
okno4.MaxLength := 7;
case Ord(Key) of
48..57: ; * 0,1,2,3,4,5,6,7,8,9
97..102: ; * a,b,c,d,e,f
65..70: ; * A,B,C,D,E,F
35: ; * znak "#"
8: ; // backspace
else
Application.ProcessMessages;
okno4.Text := ; okno3.Text := ;
okno2.Text := ; okno1.Text := ;
label1.Caption:= '';
end;
end;

sorki za bledy jakie mogly sie tu pojawic ale juz pozno jest a dla mnie sie juz myslec nie chce :-)---=-=[ Delphi 3, 6 ]=-=-
-=-=-==[ LKS ]==-=-=-
-=[ [email protected] ]=-

0

LKS - dziekuje za uwage do mojego postu. Na swoje wytlumaczenie powiem tylko tyle ze chodzilo mi od to zeby gosc sprawdzal czy mozna dokonac konwersji czy tez nie.

Pozdrawiam
fojciczek

1 użytkowników online, w tym zalogowanych: 0, gości: 1