Drukowanie z Richedit POMOCY!! :(

0

No to ugrzęzłam:( Robię mały programik, w nim jest Richedit na szerokość 130 i przycisk z kodem do drukowania. Chcę aby mi wydrukowało tekst na szerokość Richedit (czyli na 130), a drukuje na szarokość kartki A4 :(( Jak to mam poprawić???

Mam też drugi problem: programik ma takie 3 kolumny Richedit i chciałam, aby mi na kartce A4 drukowało właśnie tak, czyli lewa, środkowa i prawa kolumna, które są długie na całą kartkę a szerokie na wspomniany wcześniej wymiar :-|
Da się jakoś podpiąć do tamtego przycisku SetupDialog i PrinterSetupDialog abym mogła sobie wybrac drukarkę i kolor??

ZA POMOC Z GÓRY WAM DZIĘKUJĘ, W SUMIE JEST TO WAŻNE DLA MNIE, ALE WSZELKIE MOJE KROKI W ROZWIĄZANIU TYCH PROBLEMÓW KIERUJĄ SIĘ KU NIPOWODZENIU :-(

0

Cześć Siostro ;)
Nie jestem zawodowcem - tylko amatorem , co oprócz żłopania piwa
zajrzy na kompa i B. Gatsea poudaje :)
Więc tak na chłopski rozum spróbuje zaradzić :)

Tak to się ma:

PROCEDURE TForm1.Button1Click(Sender: TObject);
var
 odst1,odst2,odst3 :Integer;
 zdanie :String;
 x,y :Integer;
 calyText :TStringList;
Begin
 x:=0;
 {ustalenie odstępów pomiędzy kolumą a lewym brzegiem kartki
 UWAGA - Odstęp np: dla drugiej kolumny nie może być mniejszy
 niż liczba znaków najdłuższego zdania pierwszej kolumny, i
 to samo dla trzeciej - nie może być mniejszy niż liczba znaków
 najdłuższego zdania pierwszej i drugiej kolumny razem}
 odst1:=0;  odst2:=20;  odst3:=40;

 {pobranie z każdego RichEdit ilości linni i przypisanie
 największej sumy linii do zmiennej "x"}
 if RichEdit1.Lines.count > x then x:= RichEdit1.Lines.count;
 if RichEdit2.Lines.count > x then x:= RichEdit2.Lines.count;
 if RichEdit3.Lines.count > x then x:= RichEdit3.Lines.count;

 {pobranie do zmiennej "calyText" treści z trzech TRichEdit}
 calyText:=TStringList.Create;
 for y:= 0 to x do
 begin
   //wykreowanie pustego łańcucha (pojedyńczej linii)
   zdanie:=StringOfChar(' ',255);
   //wpisywanie w łańcuch uwzględniając odstępy pomiędzy kolumnami
   Insert(RichEdit1.Lines.Strings[y],zdanie,odst1);
   Insert(RichEdit2.Lines.Strings[y],zdanie,odst2);
   Insert(RichEdit3.Lines.Strings[y],zdanie,odst3);
   calyText.Add(zdanie);
 end;

 {w tym RichEdicie podgląd (nie musi być)
 możesz zdrukować ze zmiennej "calyText"}
 RichEdit4.Clear;
 RichEdit4.Lines.AddStrings(calyText);
 RichEdit4.Print(' ');
End;

{PS.
Wszystko jest OK gdy ustawisz fonty dla poszczególnych TRichEdit na "Courier New" ponieważ ten typ fonta utrzymuje stałą szerokość równą matrycy.
Przy innych fontach szerokość dla poszczególnej literki
ulega zmianie i trzeba by zmodyfikować całkowicie procedurę w kwestii
ustalenia odstępów - a to dużo główkowania ;) i nie za bardzo teraz
mam czas by tym się bawić . Wszystko w Twoich rękach :-)
}

A do panów: Pomóżcie panience - toć to rodzynek babka która zamiast
uganiać się za chłopcami po zabawach, chce posiąść tajniki wiedzy programowania ;)

0

Inter rewelacja!!! Dziękuję Ci ślicznie!:) hmm ja Delphi muszę się uczyć bo mam go w szkole:( i będę tu często zaglądała:) Wszystko działa Inter tylko jeszcze dwie rzeczy muszę tam dorobić, czyli:

  1. Richedit1 ma wysokość 700 i gdy już się zbliżam na samym dole do końca jak piszę text to żeby przy ostatniej linii wskakiwał mi automatycznie kursor do Richedit2 na samą górę:) itd. Ojeeeej jakie to pokręcone:(
  2. Musze się nauczyć formatowac czcionki, czyli np. w tym Richedit mam tekst i teraz zaznaczam go myszką i np. pogrubiam go lub zmieniam kolor. Nauczyłam się ogólnie zmieniać kolor czcionki za pomocą FontDialog, ale zaznaczyć tekst a potem go pogrubić przykładowo buttonem B już nie umiem. Nie umiem napisac od tego kodu :-(
    Będę wdzięczna jeśli mi pomoże mi ktoś w tym!! :-) Wiecie - dać dziecku zabawkę lub kobiecie auto, a nie daj Boże Delphi do ręki to już koniec świata jest :-D Pomóżcie kochani!! Jeszcze raz dziekuję...
0

<font color="green">Nauczyłam się ogólnie zmieniać kolor czcionki za pomocą FontDialog, ale zaznaczyć tekst a potem go pogrubić przykładowo buttonem B już nie umiem. Nie umiem napisac od tego kodu</span>

Nie trudnego.. - wystarczy, że obsłużyć zdarzenie OnClick tego właśnie Buttona (Zakładka Events na Object Inspector ;) - klikasz 2 razy .. i tam wpisz kod na to swoje pogrubienie.. lub inny jaki ma się wywołać po kliknięciu na button - czyż nie proste? :)

0

Detox pewnie że proste, tylko dlaczego mi się pogrubia cały text w kolumnie a nie to, które sobie podświetliłam myszką? :-(
Napisałam w OnClick buttona tak:

procedure TForm1.Button2Click(Sender: TObject);
begin
richedit1.Font.Style:=[fsbold]
end;

Tylko to teraz będzie się odnosić tylko do Richedit1, a chciałam aby ten button2 ("B") dotyczył się do wszystkich kolumn eh :-( czemu to takie skomplikowane? No i mnie gryzie ciągle te przejście automatyczne do Richedit2 i 3 gdy pisze text w ostatniej linii poprzedniej kolumny i to byłoby na tyle. Nie mam więcej pytań :-) Wiem, na początku jest najgorzej, ale potem jakoś idzie, ale sama sobie nie poradzę, Dziękuję za pomoc!!!

0
RichEdit1.SelAttributes.Style := [fsBold]

A przejście... Nie wiem czy dobrze zrozumiałem ale jeżeli chcesz przeniśc aktywnośc na inny RichEdit to dajesz np.

RichEdit3.SetFocus;
0
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to Form1.ComponentCount - 1 do
    if Form1.Components[i] is TRichEdit then
       if (Form1.Components[i] as TRichEdit).SelLength > 0 then
         (Form1.Components[i] as TRichEdit).SelAttributes.Style := [fsBold]; 
end;

Metoda może niezbyt optymalna, ale robiona na szybkiego :)

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