[ Príspevkov: 5 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.05.09
Prihlásený: 16.01.18
Príspevky: 95
Témy: 39 | 39
Bydlisko: Michalovce
NapísalOffline : 20.07.2009 17:13 | Ukladaci, messagebox

Ked chcem pri ukonceni mojho programu, myslim tym stlacnie kriziku v pravom hornom rohu, aby mi vyskocilo messagebox s ponukou ulozit ano - ulozi a ukonci, nie - ukonci a CANCEL - neukonci program a nic sa nestane... ku akej akcii to treba pridat aby sa program neukoncil po stlaceni krizika?


Offline

Skúsený užívateľ
Skúsený užívateľ
Ukladaci, messagebox

Registrovaný: 11.01.09
Prihlásený: 10.05.24
Príspevky: 1385
Témy: 9 | 9
Bydlisko: Hrinova
NapísalOffline : 20.07.2009 19:35 | Ukladaci, messagebox

Do eventu OnClose hlavného formu pridaj tento kód:
Kód:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin

  case MessageBox(Handle, 'V editore boli vykonané zmeny. Prajete si zmeny uložiť?', PChar(Application.Title),
  MB_YESNOCANCEL or MB_ICONQUESTION) of
    ID_YES: RutinaNaUlozenieZmien();
    ID_NO: ;
    ID_CANCEL: Application.Run;
  end;

end;

RutinaNaUlozenieZmien() je procedúra, v ktorej sa napríklad uložia potrebné dáta na disk.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 12.05.09
Prihlásený: 21.05.10
Príspevky: 33
Témy: 8 | 8
Bydlisko: Bánovce nad...
NapísalOffline : 21.07.2009 23:55 | Ukladaci, messagebox

to fico:
ahoj pls mohol by si mi prosím ťa vysvetliť, že z kade si prišiel na to že v tej procedúre albo funkcií messagebox je aj parameter to PChar(Aplication.title)??
keď sa pozriem v delphi do helpu tak tam nič také nieje.
ja som zatiaľ na všetko používal takúto funkciu:
Kód:
function MessageDlgTitle(const Title: String; const Msg: string; Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
begin

  with CreateMessageDialog(Msg, mtCustom, Buttons) do
  try
     Caption:=Title;
     HelpContext:=HelpCtx;
     HelpFile:='';
     Position:=poScreenCenter;
     result:=ShowModal;
  finally
     Free;
  end;

end;

a tá dokonca v mojom helpe ani nieje :) tak rád by som sa spýtal že ako na to prídem že čo v sebe také niečo v sebe ukrýva a dá sa zmeniť aj to čo na prvý pohľad zmeniť nejde?? ale vieš ide o princíp nejde mi o to že ako zmeniť ten caption...ale že ako na to niekto prišiel že sa dá zmeniť??
uf dúfam že som sa správne vyjadril a porozumieš mojej otázke...ja by som chcel vedieť niečo ako datasheet tej procedúry alebo funkcie :roll:


_________________
SE C905 8GB
Gaming Notebook MSI GX720X-027SK P8400 4GB 320GB VGA
Offline

Skúsený užívateľ
Skúsený užívateľ
Ukladaci, messagebox

Registrovaný: 11.01.09
Prihlásený: 10.05.24
Príspevky: 1385
Témy: 9 | 9
Bydlisko: Hrinova
NapísalOffline : 22.07.2009 19:44 | Ukladaci, messagebox

Nie som si istý, či som to pochopil správne, ale vysvetlím radšej všetko :)

Funkcia MessageBox:
Je to API funkcia (preto nie je v nápovede Delphi - tam sú len Delphi funkcie), ktorá má štyri parametre:

Kód:
          hWnd: HWND,              // handle okna, ktoré bude vlastníkom okna správy
          lpText: PAnsiChar,       // text zobrazený v tele správy
          lpCaption: PAnsiChar,    // text zobrazený v nadpise správy
          uType: Cardinal          // bitové vlajky (flags) nastavujúce vlastnosti okna správy

Ak si si všimol hlavný rozdiel medzi funkciami MessageBox a CreateMessageDialog, druhá spomenutá berie ako parameter reťazec string. MessageBox PAnsiChar (dôvod je jednoduchý - MessageBox je API funkcia, teda je "optimalizovaná" pre všetky jazyky, kdežto CreateMessageDialog je funkcia platná len pre Delphi.

Dátový typ PAnsiChar:
Je to reťazec, ktorý je ukončený nulou. Delphi pracuje s reťazcom string (neviem presne, aká je jeho štruktúra, ale zdá sa mi, že na offsete, kde začína, je jeho dĺžka, ale to si nie som istý), no ten by sa nedal použiť napríklad v jazyku C. Preto v API funkciách je použitý akýsi "štandard", ktorý je použiteľný vo viacerých jazykoch. Z Delphi reťazca string sa ale dá veľmi jednoducho pretypovať na PAnsiChar takto:

Kód:
pcharRetazec:= PChar(stringRetazec);


Application.Title:
V tejto globálnej premennej je názov aplikácie (titulok), ktorý je vidieť napríklad na hlavnom paneli.

Zistenie, ktorá funkcia má aké parametre:
Ak sa jedná o API funkciu, o tých máš potrobný popis v súbore WIN32.HLP - nachádza sa v zložke Delphi, štandardne C:\Program Files\Common Files\Borland Shared\MSHelp\WIN32.HLP. A samozrejme, dobrý pomocník je google.

Už je to lepšie, alebo treba ešte niečo vysvetliť?


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 12.05.09
Prihlásený: 21.05.10
Príspevky: 33
Témy: 8 | 8
Bydlisko: Bánovce nad...
NapísalOffline : 22.07.2009 21:50 | Ukladaci, messagebox

nie nie :) presne tak som to potreboval vysvetliť:D..vôbec som nevedel kde by som sa o tom viac dozvedel a vôbec som nevedel že existuje nejaký win32.hlp

ďakujem ti veľmi pekne
:D


_________________
SE C905 8GB
Gaming Notebook MSI GX720X-027SK P8400 4GB 320GB VGA
 [ Príspevkov: 5 ] 


Ukladaci, messagebox



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Messagebox adult only !

v JavaScript, VBScript, Ajax

0

474

02.09.2010 14:53

shaggy

V tomto fóre nie sú ďalšie neprečítané témy.

Ukladaci pristor

v Smartfóny a tablety

2

457

02.10.2012 16:30

Ominous

V tomto fóre nie sú ďalšie neprečítané témy.

Samsung Galaxy Y, ukladací priestor

v Mobilné zariadenia

1

680

10.08.2012 0:53

nBXXL



© 2005 - 2024 PCforum, edited by JanoF