Dwa problemy: Memo i menu

0

Dwa upierdliwe problemy (obydwa w jednej procedurze):

if text.WordWrap=False then
begin
text.Scrollbars:=ssVertical;
text.WordWrap:=True;
Zawijaniewierszy1.Checked:=True;
end;

if text.WordWrap=True then
begin
text.Scrollbars:=ssBoth;
text.WordWrap:=False;
Zawijaniewierszy1.Checked:=False;
end;

Błąd nr. 1: co zrobić, żeby pojawił się "ptaszek" przy polu "Zawijanie wierszy" (chodzi oczywiście o menu)?
Błąd nr. 2: Domyślnie pole Wordwrap jest ustawione na True. Po kliknięciu na "Zawijanie wierszy" wartość zmienia się na False, wiersze przestają być zawijane i pojawia się poziomy scrollbar. Działa. Nie działa w drugą stronę... winą jest (wg. mnie) "niezniknięcie" poziomego scrollbara, przez co Wordwrap nie ma prawa działać... Jak można to naprawić?

0

Powinno być tak
procedure TForm1.Zawijaniewierszy1Click(Sender: TObject);
begin
If ZawijanieWierszy1.Checked=false then begin
ZawijanieWierszy1.Checked:=true;
text.Scrollbars:=ssVertical;
text.WordWrap:=True;
end else begin
text.Scrollbars:=ssBoth;
text.WordWrap:=False;
Zawijaniewierszy1.Checked:=False;
end;

end;
Pamietaj komputer nie myśli to ty masz mysleć.
Pozdrawiam

0
procedure TForm1.Zawijaniewierszy1Click(Sender: TObject);
begin
ZawijanieWierszy1.Checked=not ZawijanieWierszy1.Checked;
text.WordWrap:=not text.WordWrap;
if ZawijanieWierszy1.Checked then  text.Scrollbars:=ssVertical else text.Scrollbars:=ssBoth;
end;
0

Działa, dzięki ;)

0

I kolejne pytanko (nawet dwa)...

  1. Da się jakoś zablokować rozmiar okna? Chodzi o to, żeby użyszkodnik nie miał możliwości zmieniania rozmiaru okna...
  2. Czy da się jakoś "manipulować" przyciskami w prawym górnym rogu każdego okienka? Np. użytkownik klika na "krzyżyk" (chodzi o zamknij), i wyświetla się np. "Plik zmieniony. Zapisać?"? [albo żeby ich w ogóle nie było... ;)]
0

1: Da sie, np:

BoderStyle:=BsNone

[diabel]
2:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if application.MessageBox('pilk zmienoiny zapisać?','zapisywanie',Mb_YesNo)=6 then
  begin
    // zapisywanie
  end;
end;
0

ad.1 w zdarzeniu OnCanResize wpisać resize:=false; czy jakoś tak.

0

ad 1
zero inwencji twórczej - eh...
ustaw borderstyle na bsSingle

0

ad2
w oncloseqouery

if memo1.modified then
 if messagebox('Plik nie zostal zapisany. Zapisac?','Zapis',Mb_YesNo)=mb_yes then
  begin
   memo1.lines.savetofile('c:\plik.txt');
   {memo1.modified:=false;}
  end;
0

A po co blokować rozmiar w prymitywne sposoby. Jak sie bawic to sie bawic.
Zabeklaruj dwie prywatne zmienne H i V. Wstaw Timer i ustaw czas na powiedzmy 500. Forma bedzie wracać do pierwotnego rozmiaru

procedure TForm1.FormCreate(Sender: TObject);
begin
 H:=Form1.Height;
 W:=Form1.Width;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
  Timer1.Enabled:=True;  //Opóźnienie

end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Form1.Height:=H;
 Form1.Width:=W;
 Timer1.Enabled:=False;
end;
 
0

Zabeklaruj dwie prywatne zmienne H i V

chyba Ci chodziło o globalne [???] [???] [???]

0

Tak czy kwak, kolejne pytanka :] (to chyba jakiś quiz, czy co... :D)

  1. Co do tego FormClose... oto kod:

CanClose:=True;
if text.Modified then
begin
Pytanie:=Application.MessageBox('Plik został zmieniony. Zachowac?', 'Zapisywanie', MB_ICONQUESTION or MB_YESNOCANCEL);
case Pytanie of
IDYES: If Zapisz.Execute then begin text.Lines.SaveToFile(Zapisz.Filename); end;
IDCANCEL: CanClose := False;
end;
end;
if CanClose=True then begin Application.Terminate; end;

gdy klikam na Anuluj, to i tak zamyka program. Da się temu jakoś zaradzić?

  1. Po zmienieniu pola Memo na Richedit, program zapisuje pliki jako dokumenty sformatowane (RTF). Czy da się zapisywać jako zwykły tekst (czyli tzw. ANSI)?

  2. Jak można drukować?

0

2:
case Pytanie of
IDYES: If Zapisz.Execute then text.Lines.SaveToFile(Zapisz.Filename);
IDCANCEL:
begin
CanClose := False;
Exit; // to ci wychodzi z procedury ale nie jestem pewien czy zadziała
end;
end;

0

Nie działa... :(
[pozostało pytań: 3 z 3 ;)]

0

[sciana] [sciana] [sciana]

  1. Twój kod powinien wyglądać tak (zakładając że twoja forma to Form1):
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if Text.Modified then
    case MessageBox(0, 'Plik został zmieniony. Zachowac?', 'Zapisywanie', MB_ICONQUESTION or MB_YESNOCANCEL) of
      IDYES : if Zapisz.Execute then
                Text.Lines.SaveToFile(Zapisz.Filename);
      IDCANCEL: CanClose := False;
    end;
end;

Zwróc uwage na wcięcia, wielkośc liter i to, że tak banalne problemy powinieneś rozwiązywac samodzielnie (bo po cholere ci notatnik czy inny wordpad napisany przez ludzi z forum, skoro te windowsowe - domyslne i tak będa o niebo lepsze).

  1. Istnieje w Delphi coś takiego jak help, a na forum coś takiego jak wyszukiwarka i FAQ. Tam znajdziesz odpowiedzi na wiekszośc twoich pytań

  2. j.w.

A po co blokować rozmiar w prymitywne sposoby. Jak sie bawic to sie bawic.
Zabeklaruj dwie prywatne zmienne H i V. Wstaw Timer i ustaw czas na powiedzmy 500. Forma bedzie wracać do pierwotnego rozmiaru

[rotfl] [rotfl] [rotfl] Jeżeli to było pisane na poważnie, to nominacja do programistycznego lola miesiąca :D .

0

[rotfl] [rotfl] [rotfl] Jeżeli to było pisane na poważnie, to nominacja do programistycznego lola miesiąca :D .</quote>

To był tylko niepowazny wtręt ku uciesze publiki. Oczywiście zmiene są prywatne (dla formy) a nie globalne.

0

Jemu nie chodzilo o te zmienne tylko sam sposob... timer :D

do tematu:
2. richedit1.plaintext (tu wez lepiej memo... na jedno wychodzi)
3. richedit1.print :)

//poza closequery na close Twoj kod endrju niezabardzo sie rozni od mojego :)

0
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if Text.Modified then
    case MessageBox(0, 'Plik został zmieniony. Zachowac?', 'Zapisywanie', MB_ICONQUESTION or MB_YESNOCANCEL) of
      IDYES : 
        begin
          if Zapisz.Execute then Text.Lines.SaveToFile(Zapisz.Filename);
          action:= caFree;
        end;
      IDCANCEL:
        action:= caNone;         
    end;
end;

nie wiem czy mu sie juz udalo wiec pisze :P ja to zawsze robie w Close a nie CloseQuery... :)

a ten sposob na zatrzymanie zmiany rozmiary jest faktycznie bardzo twórczy... :D

pozdr.

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