Avatar billede fhansen Praktikant
03. januar 2006 - 23:46 Der er 6 kommentarer og
1 løsning

RichEdit, tab, tabulator

Hej.

Så driler det igen, denne gang er det tab[Byte] :Integer, jeg ikke kan få til at virke.
Når man sætter WantTabs til true, får man en række standard tabuleringer, men jeg ønsker at brugeren kan sætte sine egne tabs.
Jeg har forsøgt med følgende.

procedure TMainForm.Sttab1Click(Sender: TObject);
begin
    Editor.SetFocus;
    Editor.Paragraph.Tab[1] := 47;
    Editor.SelText := #9;
    ShowMessage(IntToStr(Editor.Paragraph.TabCount));
end;

ShowMessage er kun for at se om der bliver sat en tab, og det gør der tilsyneladende, men jeg kan ikke ikke anvende den taben.

Hilsen


Finn
Avatar billede nca Juniormester
04. januar 2006 - 10:00 #1
Prøv at indsætte nedenstående i linien efter Setfocus:

Editor.Paragraph.Tabcount:=2;
Avatar billede fhansen Praktikant
04. januar 2006 - 12:43 #2
Hej nca.

Det er prøvet, men virker heller ikke, problemmet er at der bliver sat en tab men i position 0, ??
Min kode ser nu således ud

procedure TTabFrm.Button1Click(Sender: TObject);
Var X,I: LongInt;
begin
  ShowMessage(IntToStr(Trunc((StrToFloat(Edit1.text)*72/ 2.54))));
    with PrintFrm.RichEdit1 do begin
      Paragraph.Tab[Paragraph.TabCount]:= Trunc((StrToFloat(Edit1.text)*72/ 2.54));
      Listbox1.Clear;
      for I:=0 to Paragraph.TabCount-1 do
        ListBox1.Items.Add(Format('%8.2f cm.', [(Paragraph.Tab[I]/ 72)*2.54]));
    end;
end;

Jeg har brugt Showmessage for at se hvilken position tab (i pixel) skulle blive sat i
Avatar billede nca Juniormester
04. januar 2006 - 14:14 #3
Er du opmærksom på at Paragraph.Tab starter med 0?
Hvis jeg skriver nedenstående kode:

  Editor.SetFocus;
  Editor.Paragraph.Tabcount:=1;
  Editor.Paragraph.Tab[0] := 100;
  Editor.SelText := #9;
  ShowMessage(IntToStr(Editor.Paragraph.TabCount));

så sættes der en tabulator ved 100.
Sletter jeg linien med Tabcount, bliver der sat en standard tabulator.
Avatar billede fhansen Praktikant
04. januar 2006 - 19:58 #4
nca

Du har ganske ret min løsning ligger i dit svar.

Takker mange gange


Finn
Avatar billede fhansen Praktikant
04. januar 2006 - 20:23 #5
Hej igen

Der var jeg lidt hurtig, koden virker hvis jeg ønsker at sætte en tab, men hvis jeg forsøger at sætte flere tabs, sætter den position på de andre til 0.

Jeg bruger flg. kode da jeg har lavet en dialogbox til at sætte tabs, lidt(meget) som word.
Listbox1 viser alle tabs, og i edit1 angiver jeg en afstand i cm.

procedure TTabFrm.Button1Click(Sender: TObject);
Var X,I: LongInt;
begin
    with PrintFrm.RichEdit1 do begin
      SetFocus;
      Paragraph.Tabcount:=Paragraph.Tabcount+1;
      Paragraph.Tab[0] := Trunc((StrToFloat(Edit1.text)*72/ 2.54));
      ShowMessage(IntToStr(Paragraph.TabCount));
      Listbox1.Clear;
      for I:=0 to Paragraph.TabCount-1 do
        ListBox1.Items.Add(Format('%8.2f cm.', [(Paragraph.Tab[I]/ 72)*2.54]));
    end;
end;
Avatar billede nca Juniormester
04. januar 2006 - 21:14 #6
Du skal sætte værdien af TabCount til det antal tab's du sætter, så tror jeg det virker.
Avatar billede fhansen Praktikant
05. januar 2006 - 23:30 #7
Du har ganske ret, det virker for mig nu .
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