Avatar billede easysoft_studios Nybegynder
28. februar 2002 - 15:39 Der er 10 kommentarer og
1 løsning

HTML udtræk farveværdi, og angiv ny

Jeg vil gerne udtrække farveværdien for <body> delen af html'en. Hvordan gør jeg det? Så vil jeg gerne kunne tage en hvilken som helst farve (Delphi-farve) fx. clBlack og få koden til HTML farve. Jeg ved at det er det binere talsystem, men jeg ved ikke hvordan jeg regner med det i Delphi. Findes der mon et komponent eller kode som kan klare konverteringen?
Avatar billede martinlind Nybegynder
28. februar 2002 - 15:58 #1
function HexToBin(Text, Buffer: PChar; BufSize: Integer): Integer;
Avatar billede easysoft_studios Nybegynder
28. februar 2002 - 16:01 #2
eks?
Avatar billede cms Nybegynder
28. februar 2002 - 16:52 #3
1:
udtræk farveværdi?
Hvis du har en IHTMLBodyElement, så gøres det sådan:
var
  Color: TColor;
  Browser: IWebBrowser;
  Document: IHTMLDocument2;
  Body: IHTMLBodyElement;
begin
  if Browser = nil then
    Exit;
  if Browser.Document <> nil then
    Browser.Document.QueryInterface(IHTMLDocument2, Document);
  if (Document <> nil) and (Document.body <> nil) then
    Color := Document.Body.bgColor;
end;

2:
function ColorToHtml(Color: TColor): String;
begin
  result := '#' + IntToHex(Color, 6);
end;
Avatar billede easysoft_studios Nybegynder
28. februar 2002 - 18:04 #4
cms >> er det der IHTMLBodyElement en del af Delphi 6 Enterprise? eller skal man downloade det et sted?
Avatar billede easysoft_studios Nybegynder
28. februar 2002 - 18:25 #5
det dur kun delvist dit svar cms.
Jeg har et SynEdit hvor der er en linie, hvorpå der står: <body>
der kunne også stå <body bgcolor="#000000">
det jeg vil er at hente ligepræcis den linie ind i en string. Derefter vil jeg trække farven for bgcolor ud, og konvertere den til en Delphi-farve, sådan at jeg kan vise hvordan bgcolor ser ud...
Når det er gjort, skal brugeren have mulighed for at ændre bgcolor, til en hvilken som helst farve. Derfor skal en Delphi-farve konverteres til HTML-farve (hvilket din funktion gør glimrende) og derefter sætte den nye farvekode ind, og til sidst smide linien tilbage i SynEdit, samme sted hvor det blev taget fra...
Håber det giver nogen mening :)
Avatar billede dkn Nybegynder
28. februar 2002 - 20:50 #6
function HexToColor(const S: string): TColor;
var I: Integer;
begin
  I := StrToIntDef('$'+S, 0);
  Result :=
    (I AND $0000FF00) OR
    ((I AND $00FF0000) SHR 16) OR
    ((I AND $000000FF) SHL 16);
end;


procedure TForm1.Button1Click(Sender: TObject);
Var
St1, St2:string;
BgColor:Tcolor;
begin
if pos('<body', SynEdit1.Lines.Text) <>0 then
begin
St1 := copy(SynEdit1.Lines.Text, pos('<body', SynEdit1.Lines.Text), length(SynEdit1.Lines.Text));
St1 := copy(St1, pos('bgcolor="', St1)+9, length(St1));
St1 := Copy(St1, 1, pos('"', St1)-1);
BgColor := HexToColor(St1);

//Nu er koden i BgColor, så kan du jo:
// if colordialog1.execute then
// begin
// colordialog1.color := BgColor;
// end;
end else showmessage('Ingen body!');
end;
Avatar billede cms Nybegynder
28. februar 2002 - 22:09 #7
okay, troede det var fra en internet explorer. dkn's forslag skulle virke :)
Avatar billede easysoft_studios Nybegynder
28. februar 2002 - 23:28 #8
jepper! der er bare lige en lille fejl: # må ikke være med i konversionen, for så bliver farven altid sort. derfor skal:
St1 := copy(St1, pos('bgcolor="', St1)+9, length(St1));
være:
St1 := copy(St1, pos('bgcolor="', St1)+10, length(St1));

tak for hjælpen alle sammen!
Avatar billede dkn Nybegynder
28. februar 2002 - 23:38 #9
ok, her lige lidt når du skal sætte den nye farve tilbage (du har nok det kode, jeg faldt bare lige over det)

    function ColorToHex(Inp: TColor): String;
    var
    tmp: Longint;
    begin
    tmp:= ColorToRGB(inp);
    Result:= '#' + IntToHex(GetRValue(tmp),2) + IntToHex(GetGValue(tmp),2) + IntToHex(GetBValue(tmp),2);
    end;
Avatar billede easysoft_studios Nybegynder
01. marts 2002 - 00:17 #10
til det virker virker cms' fint. ellers tak :)
Avatar billede easysoft_studios Nybegynder
01. marts 2002 - 00:25 #11
oh nej! cms' virker ikke. den kludre rundt i farverne.
din function virker! takker!!!
sov godt :)
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