Przypisanie pliku ze zdjęciem do obrazka

0

Witam!

Mam problem z przypisaniem zdjęcia z dysku do obrazka.

TZN:

Dodaję sobie 'OpenImageDialog' i chciałbym, żeby działało coś takiego:

Image1.picture:=(openimagedialog1.filename);

lub bezpośrednio ścieżka z pliku np. :

Image1.picture:=(c:\obrazki\przykładowy.jpg);

oczywiście tak nie działa, więc chciałbym prosić o pomoc. Czy to w ogóle jest możliwe i jeśli tak to jak to powinno to wyglądać.
Z góry dziękuję za odpowiedź.

1

1.Otwieranie:

if OpenDialog1.Execute Then
 Image1.Picture.LoadFromFile(OpenDialog1.FileName);

2.Zapisywanie:

if SaveDialog1.Execute Then
 Image1.Picture.SaveToFile(SaveDialog1.FileName);

Image1.picture:=(c:\obrazki\przykładowy.jpg);

A od kiedy nawiasy, zamiast średnika ?
Poprawa:

Image1.picture:='c:\obrazki\przykładowy.jpg';
0

no sorki mój błąd, wiem że tak powinno być, tylko źle na forum napisałem

btw. THX za pomoc

PS.

Zapis:

if OpenDialog1.Execute Then Image1.Picture.LoadFromFile(OpenDialog1.FileName);

po wybraniu obrazka z dysku, otwiera okno przeglądania dysku jeszcze raz.

lepiej chyba zrobić:

procedure TForm1.OpenPictureDialog1CanClose(Sender: TObject;
  var CanClose: boolean);
begin
  Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end; 

tylko w tedy wsio jest ok, jeśli klikamy ok, ale jeśli wybierzemy anuluj, to wywala błąd... Jakieś pomysły?

A i jeszcze, jak odwołać się do pierwszego okna? Tzn jeśli chcę, by po wybraniu obrazka pokazało się nowe okno i w tym oknie pokazało się wybrane zdjęcie?

Z pokazaniem okna nie ma problemu, ale jak przenieść wartość (openpicturedialog1.filename) z pierwszego okna do drugiego?

Sorki, że się pytam o tak wiele rzeczy, ale naprawdę mi to pomoże.

Pozdro

0

Otwieranie pliku dowolnego typu przy użyciu OpenDialog robi się w jakimś przycisku lub
pozycji menu po if OpenDialog.Execute then robisz ładowanie. I nie ma sensu nic rzeźbić
w CanClose, bo to do czego innego sluży. A jak dasz Anuluj - to wiadomo nie ma nazwy
pliku pobranej z OpenDialogu i stąd pewnie te błędy. Ja zwykle się w OpenDialog - tego
co ma Events nie zmieniam. Radze tam Tobie nie mieszać - chyba że wiesz co robisz :)

0

Rozwiązałem problem z anulowaniem dodając warunek:

 
procedure TForm1.Button1Click(Sender: TObject);
begin
  openpicturedialog1.execute;
  if (openpicturedialog1.execute) and (openpicturedialog1.filename<>'') then image1.picture.loadfromfile(openpicturedialog1.filename);
end; 

ale nadal okno po wybraniu obrazka i potwierdzeniu otwiera się znowu.

0

Ale Ty uparty jesteś. Zrob po ifie normalnie otwarcie pliku i zadziała.
Chyba, że masz coś w Delphi namieszane. Oczywiście jeżeli po ifie
przy otwieraniu ma sie wykonać wiecej niz jedna istrukcja to trzeba
ją ująć w dodatkowe begin oraz end; Ech. Przecież to są 10x bardzo
mega banalne banały nawet jak na ten dział. Podstawy tego języka.

0

dlaczego jestem uparty i jak po ifie???

chodzi o to, żeby w oknie otwierania był podgląd zdjęcia dlatego openpicturedialog, poza tym, skoro wiesz jak to zrobić, to wrzuć kod i w tedy pogadamy, bo nie rozumiem co masz na myśli.

0

Arthi: Zrób tak, jak Ci zostało napisane...

if (openpicturedialog.execute() then image.picture.loadFromFile(openpicturedialog.filename);

I to wystarczy. Nic "dwa razy" nie bedzie sie pojawialo. Zapewniam Cie. Chyba, ze sam cos dalej w kodzie namieszales.

0

Arthi: uparty, bo kombinowałeś z czymś gdzie kobminowac nie trzeba.
A kodu nie wkleilem, bo minimalnie dwie linijki myślałem, że będziesz
wiedzial jak użyć. A chodziło mi o to, co wkleił wyżej [losowa nazwa].

0

tak zrobiłem na początku, ale otwiera się dwa razy. Nie piszcie 'Na pewno nie będzie się otwierało dwa razy'. Gdyby się nie otwierało to nie byłoby problemu.

Jeśli nie wierzycie macie tu filmik (10s):

Pobierz :

http://www.megaupload.com/?d=838TABKV

lub

Obejrzyj online:

http://www.megavideo.com/?d=838TABKV

0

zrobiłem to tak, choć może tak nie jest poprawnie to przynajmniej działa:

openpicturedialog1.Execute;
if openpicturedialog1.filename<>'' then image1.picture.loadfromfile(openpicturedialog1.filename);

po kliknięciu Anuluj nie ma błędu i po wybraniu zdjęcia ładuje się tam gdzie trzeba

dziękuję wszystkim za pomoc, przepraszam, jeśli wyprowadziłem z równowagi.

Pozdrawiam, Arthi

1

To masz coś nie tak z Windowsem albo z Delphi chyba, w pustym projekcie
jeżeli na formatkę dasz Image1, OpenPictureDialog1 i Button1, ktoremu w
zdarzeniu OnClick wkleisz poniższy kod MUSI zadziałać nawet z anuluj, nie
powinno być problemów. No chyba, że któraś z pod-własności Options, dla
OpenPictureDialogu coś miesza, ale podejrzewam że nie. Tylko wiadomo,
dla obslugi plików JPEG neleży dodac do uses modul jpeg. Pierwszy raz w
ogóle widzę żeby OpenDialog jakikolwiek sprawiał takie problemy jak Tobie.

  if OpenPictureDialog1.Execute then
  begin
    Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
  end;
0

może masz rację, przecież to vista i do tego zajechana (od ponad roku nie reinstalowałem).

dzięki za pomoc, sprawdzę po reinstalacji.

PS. Odnośnie powyższego postu - po do dawać grupującą dla jednej instrukcji???

0

Nie jest to koniecznie. Niektórzy uważają to za błąd. Jednak ja
mam taki zwyczaj. Ponieważ może być tak że po if ... then, po
jakimś czasie - zajdzie konieczność dopisania więcej niż jednej
instrukcji i wtedy co, przeformatowywać kod formatterem albo
ręcznie albo się pomylić. W 90% przypadków daje begin end;

0

ok, rozumiem, w sumie racja, bo jak masz kilka tys. linii kodu to trochę głupio potem szukać błędu...

a jeśli masz jeszcze do mnie nerwy, byłbym wdzięczny za pomoc w tym temacie:

http://4programmers.net/Forum/Newbie/170329-tworzenie_nowego_okna_programu?p=692178#id692178

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