TOpenPictureDialog in JPG

Odpiranje, tiskanje, pisanje v datoteke in drugo.
premza
Prispevkov: 62
Pridružen: 08.05.2002 12:13:42

TOpenPictureDialog in JPG

Odgovor Napisal/-a premza » 01.12.2005 10:52:41

TOpenPictureDialog podpira samo formate (BMP, ICO, WMF in EMF). Je kje kaj podobnega, s katerim bi lahko izbiral tudi med JPG-ji.

Še raje bi mel zadevo, ki ne bi odpirala nekega novega okna, ampak bi jo postavil na mojo formo in bi v enem okenčku izbiral mapo, v drugem večjem pa imel prikazane slike z možnostjo izbire.

T
Prispevkov: 95
Pridružen: 02.01.2005 23:18:53

TOpenPictureDialog in JPG

Odgovor Napisal/-a T » 01.12.2005 11:46:46

Dodaj JpegImage pop uses (kjerkoli) in bo avtomatsko delal. JpegImage registrira svoj filter katerega TPicture avtomatsko uporabi in bo v OpenPictureDialog delal.

lp

premza
Prispevkov: 62
Pridružen: 08.05.2002 12:13:42

TOpenPictureDialog in JPG

Odgovor Napisal/-a premza » 01.12.2005 12:00:52

V uses sem dodal Jpeg in stvar dela... :)

Hvala

Silver_War
Prispevkov: 664
Pridružen: 01.06.2004 14:50:41

TOpenPictureDialog in JPG

Odgovor Napisal/-a Silver_War » 01.12.2005 16:39:23

Če pa hočeš v svojo formo vključit možnost predogleda slik, si malo poglej to temo. Sicer program katerega kodo lahko najdeš v tej temi odpira tako JPG kot BMP slike. Za ostale formate pa nisem prepričan, takrat nisem probeval.

Pa še link do teme

premza
Prispevkov: 62
Pridružen: 08.05.2002 12:13:42

TOpenPictureDialog in JPG

Odgovor Napisal/-a premza » 04.12.2005 13:16:13

Kako pa spremenim način prikaza datotek?

Zažene se vedno z "List", meni pa bi bili bolj všeč "Thumbnails".

premza
Prispevkov: 62
Pridružen: 08.05.2002 12:13:42

TOpenPictureDialog in JPG

Odgovor Napisal/-a premza » 05.12.2005 09:02:15

Kdor išče ta najde... :D

Funkcija za zamenjavo se kliče iz OnFolderChange, ker v OnShow nima učinka.
S Tag=0,1 se komplicira zato, ker je nima smisla klicati vsakič.

Koda: Izberi vse

function SetDialogToThumbnails(Handle: THandle): Boolean;
var
  NotifyWnd: THandle;
begin
  Result    := False;
  NotifyWnd := FindWindowEx(GetParent(Handle), 0, 'SHELLDLL_DefView', nil);
  if NotifyWnd <> 0 then
  begin
    SendMessage(NotifyWnd, WM_COMMAND, $702D, 0);
    Result := True;
  end;
end;

procedure TForm1.FormDblClick(Sender: TObject);
begin
   Dialog.Tag := 0;
   Dialog.Execute;
end;

procedure TForm1.DialogFolderChange(Sender: TObject);
begin
  if Dialog.Tag = 0 then
  begin
    SetDialogToThumbnails(Dialog.Handle);
    Dialog.Tag := 1;
  end;
end;

Miha-R
Prispevkov: 2155
Pridružen: 14.05.2001 21:29:53

TOpenPictureDialog in JPG

Odgovor Napisal/-a Miha-R » 05.12.2005 09:24:53

Škoda, ker nisi pustil kar originala, ker je bolj splošen in uporaben.

Koda: Izberi vse

type 
  TFileViewStyle = (fvsIcons, fvsList, fvsDetails, fvsThumbnails, fvsTiles); 

function SetFileDialogViewStyle(Handle: THandle; ViewStyle: TFileViewStyle): Boolean; 
const 
  CommandIDs: array[TFileViewStyle] of Word = ($7029, $702B, $702C, $702D, $702E); 
var 
  NotifyWnd: THandle; 
begin 
  Result := False; 
  NotifyWnd := FindWindowEx(GetParent(Handle), 0, 'SHELLDLL_DefView', nil); 
  if NotifyWnd <> 0 then begin 
    SendMessage(NotifyWnd, WM_COMMAND, CommandIDs[ViewStyle], 0); 
    Result := True; 
  end; 
end;
Vedno sem želel napisati prav tak odgovor.

premza
Prispevkov: 62
Pridružen: 08.05.2002 12:13:42

TOpenPictureDialog in JPG

Odgovor Napisal/-a premza » 05.12.2005 10:25:38


Silver_War
Prispevkov: 664
Pridružen: 01.06.2004 14:50:41

TOpenPictureDialog in JPG

Odgovor Napisal/-a Silver_War » 05.12.2005 19:24:21

Kako pa spremenim način prikaza datotek?

Zažene se vedno z "List", meni pa bi bili bolj všeč "Thumbnails".
Za to se boš pa moral žal malo potrudit in si prilagodit kodo. Jaz sem je pač takrat samo nahitro napisal.

premza
Prispevkov: 62
Pridružen: 08.05.2002 12:13:42

TOpenPictureDialog in JPG

Odgovor Napisal/-a premza » 06.12.2005 08:19:00

Še raje bi mel zadevo, ki ne bi odpirala nekega novega okna, ampak bi jo postavil na mojo formo in bi v enem okenčku izbiral mapo, v drugem večjem pa imel prikazane slike z možnostjo izbire.
Sem se lotil še izdelave nove komponente, ki bi to počela. Za osnovo sem vzel TListView...
Ideja je bila, da bi vanjo prebral vse slike iz neke mape (imena datotek), potem pa priključil zraven ImageList in vanj stlačil ustrezne slike...

Koda, ki doda sliko v ImageList...

Koda: Izberi vse

      Bitmap:=TBitmap.Create;
      Bitmap.LoadFromFile(FPictureDir+'\'+PictureFile.Name);
      Bitmap.Canvas.StretchDraw(Rect(0,0,FWidth,FHeight),Bitmap);
      Bitmap.Width:=FWidth;
      Bitmap.Height:=FHeight;
      ImageList.Add(Bitmap,nil);
Za BMP-je dela OK, pri JPG-ji pa javi "EInvalidGraphic-Bitmap image is not valid"

Kako narediti nekaj podobnega za JPG-je?
Zadnjič spremenil premza, dne 06.12.2005 08:20:15, skupaj popravljeno 1 krat.

Odgovori