Jak skonwertować TColor na String?
Kolor na string
[code]ColorToString()[/code]
String na color
[code]StringToColor()[/code]
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
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ć)
Sorki, ja źle napisałem. Chodzi mi o to, by wstawić kod html
[code]
var
s: string;
begin
if not ColorDialog1.Execute then Exit;
s := IntToHex(ColorDialog1.Color, 6);
Richedit.SelText := '#' + s;
end;[/code]
[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
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.
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
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;
Sorki, że pytam :-P Gdzie to wpisać? :-8 Prosze nie krzyczeć, ale jestem jeszcze troche "nie dokształcony" :d
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
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
zla kolejnosc albo zabraklo ci jakiejs wartosci lub obliczenia zle
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!! ;-(
- Nie napisałeś co chcesz osiągnąć.
- 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;
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
No właśnie - chyba jedynie tak. Ale szkoda, że nikt (chyba nikt) nie potrafi wyjaśnić, co jest źle. :-( Ale dzieki wesoledi!! ;-)
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 $-->#. :-)
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!
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 +\-)
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 !!