Konwersja TColor na String

0

Jak skonwertować TColor na String?

0

Kolor na string

[code]ColorToString()[/code]

String na color

[code]StringToColor()[/code]

0

Chcę wstawić na memo1 linię o kolorze takim, jaki użytkownik sobie wybierze w okienku ColorDialog1. Lecz gdy daje potem ColorToString to linia jest innego koloru, niż ten, który wybrał użytkownik. :| Co jest w takim razie nie tak?? :-8

0

niewiem czy cie dobrze zrozumialem, ale spróbuj użyć RichEdit zamiast Memo, bo memo może miec tylko jeden kolor (niemożesz sobie ustawiać ze 1 linijka ma być np niebieska a druga zielona, a w richedit możesz tak robić)

0

Sorki, ja źle napisałem. Chodzi mi o to, by wstawić kod html

0

[code]
var
s: string;
begin
if not ColorDialog1.Execute then Exit;
s := IntToHex(ColorDialog1.Color, 6);
Richedit.SelText := '#' + s;
end;[/code]

0

[code]
var
s: string;
begin
if not ColorDialog1.Execute then Exit;
s := IntToHex(ColorDialog1.Color, 6);
Richedit.SelText := '#' + s;
end;[/code]

tylko wychodzi inny kolor niz wybrałem w ColorDialog1

0

Jak inny? - chyba, że później na HTML to bierzesz - ten z kolei ma tylko 256 kolorów - trzeba wybierać tylko kolory "bezpieczne", zdaje się, że jest taka opcja w inspektorze obiektów przy TColorDialog.

0

Jak inny? - chyba, że później na HTML to bierzesz - ten z kolei ma tylko 256 kolorów - trzeba wybierać tylko kolory "bezpieczne", zdaje się, że jest taka opcja w inspektorze obiektów przy TColorDialog.

Szukałem, lecz nie wiem, która dokładnie :-8 Kto wie? :d

0

W HTMLu colory zapisywane są od d**y strony to znaczy w kolejności RGB :-D

function Col2Html(Col: TColor): String;
var
s: String;
begin
s := IntToHex(Col, 6);
Result := '#'+s[5]+s[6]+s[3]+s[4]+s[1]+s[2];
end;

0

Sorki, że pytam :-P Gdzie to wpisać? :-8 Prosze nie krzyczeć, ale jestem jeszcze troche "nie dokształcony" :d

0

Sorki, że pytam :-P Gdzie to wpisać? :-8 Prosze nie krzyczeć, ale jestem jeszcze troche "nie dokształcony" :d

tam gdzie potrzebujesz mieć color htmlowy (string) a masz
tylko tcolor (integer) wstawiasz Col2Html(zmienna_tcolor),
tak właśnie działają funkcje :-D

0

Wstawiłem function Col2Html(Col: TColor): string;
var
s: string;
begin
s := IntToHex(Col, 6);
Result := '#'+s[5]+s[6]+s[3]+s[4]+s[1]+s[2];
end;
pod IMPLEMENTATION, jak mi polecił Sheitar, ale wyskakują błędy z USES. Coś wyciąłem, jakoś problem z USES zniknął, ale po uruchomieniu programu okazuje się, że i tak i tak nie działa dobrze. Jak zaznaczam kolor żółty to daje mi jakiś niebieski ;-(
:d Czy ktoś moze pomóc?? :-P

0

zla kolejnosc albo zabraklo ci jakiejs wartosci lub obliczenia zle

0

zla kolejnosc albo zabraklo ci jakiejs wartosci lub obliczenia zle

Pytałem sie przed chwilą Vogel'a co i jak i też nie działa!! ;-(

0
  1. Nie napisałeś co chcesz osiągnąć.
  2. Nie napisałeś co Ci nie działa, wnioskuje że
    złe kolory, więc wstaw na formę Button,
    WebBrowser, ColorDialog i sprawdź jakie
    Ci się kolory wyświetlają.

function Col2Html(Col: TColor): string;
var
s: string;
begin
s := IntToHex(Col, 6);
Result := '#'+s[5]+s[6]+s[3]+s[4]+s[1]+s[2];
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('about:blank');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if ColorDialog1.Execute then
WebBrowser1.OleObject.document.body.bgcolor :=
Col2Html(ColorDialog1.Color);
end;

0

ja zrobilem obejscie, wykorzystalem komponenty delphi, wiem ze to zwalnia ale dziala :)

if colordialog1.Execute then
begin
panel1.Color:=colordialog1.Color;
memo1.Lines.Strings[0]:=colortostring(panel1.Color);
if memo1.Lines.Strings[0]='clBlack' then
memo1.lines.strings[0]:='$00000000' else
if memo1.lines.strings[0]='clWhite' then
memo1.lines.strings[0]:='$00ffffff' else
if memo1.lines.strings[0]='clGray' then
memo1.lines.strings[0]:='$00c0c0c0' else
if memo1.lines.strings[0]='clSilver' then
memo1.lines.strings[0]:='$00808080' else
if memo1.lines.strings[0]='clBlue' then
memo1.lines.strings[0]:='$00ff0000' else
if memo1.lines.strings[0]='clLime' then
memo1.lines.strings[0]:='$0000ff00' else
if memo1.lines.strings[0]='clRed' then
memo1.lines.strings[0]:='$000000ff' else
if memo1.lines.strings[0]='clMaroon' then
memo1.lines.strings[0]:='$00000080' else
if memo1.lines.strings[0]='clNavy' then
memo1.lines.strings[0]:='$00800000' else
if memo1.lines.strings[0]='clGreen' then
memo1.lines.strings[0]:='$00008000' else
if memo1.lines.strings[0]='clFuchsia' then
memo1.lines.strings[0]:='$00ff00ff' else
if memo1.lines.strings[0]='clYellow' then
memo1.lines.strings[0]:='$0000ffff' else
if memo1.lines.strings[0]='clAqua' then
memo1.lines.strings[0]:='$00ffff00' else
if memo1.lines.strings[0]='clPurple' then
memo1.lines.strings[0]:='$00800080' else
if memo1.lines.strings[0]='clOlive' then
memo1.lines.strings[0]:='$00008080' else
if memo1.lines.strings[0]='clTeal' then
memo1.lines.strings[0]:='$00808000';
end;

mozesz bez problemu pozbyc sie wiekszosci kodu jesli nie jest potrzebny

// funkcja [delphi] nie dzila, co robie zle?
//bo ma być (bez spacji) - m.M

0

No właśnie - chyba jedynie tak. Ale szkoda, że nikt (chyba nikt) nie potrafi wyjaśnić, co jest źle. :-( Ale dzieki wesoledi!! ;-)

0

Właśnie jak to robiłem (i znowu mi nie pasowało :P) przypomniało mi się, że w HTML'U nie ma $00000000 tylko najwyżej #00000000.
Zamieniamy po prostu $-->#. :-)

0

Właśnie jak to robiłem (i znowu mi nie pasowało :P) przypomniało mi się, że w HTML'U nie ma $00000000 tylko najwyżej #00000000.
Zamieniamy po prostu $-->#. :-)

Skąd że znowu!!!! zapis HTML to #RGB a zapis Delphi to $ABGR!

0

Ja się tu dopiszę: mianowicie ciekawi mnie, po co jest ten pierwszy bajt. Generalnie zmiana jego wartości nic nie daje, a przy np. $FFFFFFFF wywala komunikat o przekroczeniu zakresu (z tego co mi się zdaje, o głupi jeden bit - ten który w typie Integer decyduje o +\-)

0

OK, dzięki piechnat! To był strzał w 10 :-) Poprzekształcałem sobie to jak chciałem i na razie działa ;-)
Thx for everybody !!

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