[ Marko1991 @ 14.01.2010. 22:03 ] @
Da li neko moze da mi objasni kako da se pri pokretanju programa na formi postavi slika(kao pozadnina na desktopu). Unapred hvala |
[ Marko1991 @ 14.01.2010. 22:03 ] @
[ rambo @ 15.01.2010. 11:36 ] @
Za to je najjednostavnije da koristiš TImage komponentu, koju trebaš da postaviš ispod svih drugih komponenti na toj formi. U tu komponentu možeš da učitaš sliku dok praviš program (design-time) ili kada se program pokrene (run-time). TImage standardno podržava nekoliko formata: BMP, JPG i od novijih verzija Delphi-ja PNG.
Druga varijanta je da direktno iz koda "iscrtaš" sliku na Canvas forme. Treća varijanta je da umesto TImage koristiš neku specijalizovanu komponentu. Preporučujem da za ovo pogledaš JVCL (http://jvcl.delphi-jedi.org/ je glavni sajt a http://sourceforge.net/projects/jvcl/ je project sajt sa koga skidaš komponente). [ Marko1991 @ 16.01.2010. 15:40 ] @
Hvala,ali ne razumem sta da pogledam na tim sajtovima?Skinuo sam"JVCL is a library of over 600 Delphi components developed by "Project JEDI" members"al ne znam ni tu sta da pogledam.Predomislio sam se oko projekta koji radim,imam 2 dugmeta,kad pritisnem jedno na formi se pojavi slika,kad kliknem na drugo dugme ta slika se brise i pojavljuje se nova. El moze neko predavanje kako ovo da uradim ili kako i gde da trazim kod(posto nemam toliko znanje da bih sam pisao).
[ savkic @ 16.01.2010. 20:00 ] @
> imam 2 dugmeta,kad pritisnem jedno na formi se pojavi slika,kad kliknem na drugo dugme ta slika se brise i pojavljuje se nova. El moze
> neko predavanje kako ovo da uradim ili kako i gde da trazim kod(posto nemam toliko znanje da bih sam pisao). Dodaj OnClick handler (dvaput kliklni na button) za prvo dugme i upiši: Image1.Picture.LoadFromFile('C:\PrvaSlika.bmp'); Isto tako uradi za drugo dugme i upiši putanju do druge slike. Ako se slike nalaze u diru gde je i exe onda možeš izostaviti putanju i upisati samo naziv: Image1.Picture.LoadFromFile('PrvaSlika.bmp'); [ X Files @ 16.01.2010. 20:50 ] @
@savkic
Jedno pitanje, čisto informativno. Šta se u Delphiju događa (baš u runtime-u) kada slika koja se referencira ne postoji? Tj, da li se momentalno izlazi iz funkcije (bez daljeg izvršavanja) ili se program nastavlja nakon neke poruke? U C++ Builderu se izlazi iz funkcije bez daljeg izvršavanja (uz poruku). try/catch/finally resava problem (nema poruke), mada uvek ugradim i FileExists() uz try/catch. [ bojan21 @ 17.01.2010. 03:54 ] @
Isto je i u Delphi-ju, ako slika ne postoji program izbaci exception uz poruku:
Citat: Cannot open file "zzzz''. The system cannot find the file specified. i prekida dalje izvrsavanje funkcije u kojoj je pozvano ucitavanje slike. [ Marko1991 @ 17.01.2010. 04:10 ] @
Nece da radi,izbaci par erora:Undeclared Identifier'Image1',missing operator or semicolon,could not compile used unit 'unit1.pas'
Esi siguran da se pise"Image1.Picture.LoadFromFile('PrvaSlika.bmp');"(Imam delphi7 ako nesto moze da pomogne) [ tkaranovic @ 17.01.2010. 05:48 ] @
^
Izgleda nisi pažljivo čitao šta je ko pisao. Preskočio si ono što ja rambo napisao. Da bi sa klikom učitao sliku morao bi to ovako da uradiš: Code (delphi): procedure TForm1.Button1Click(Sender: TObject); var Image: TImage; begin Image := TImage.Create(Form1); try Image.Parent := Form1; Image.Align := alClient; Image.Picture.LoadFromFile('c:\putanja do slike\PrvaSlika.bmp'); showmessage('Da li se sada vidi?'); finally Image.Free; end; end; [ caslavvl @ 17.01.2010. 07:03 ] @
pa nije stvar u putanji do slike nego nije stavio komponentu, a i ne moze da stavi Image, to ne postoji
[ tkaranovic @ 17.01.2010. 09:58 ] @
Citat: caslavvl: pa nije stvar u putanji do slike nego nije stavio komponentu, a i ne moze da stavi Image, to ne postoji Nisam ni rakao da je stvar u putanji nego (boldovano): Citat: Znači da treba da uradi ono što mu je rambo napisao. Ono što je on uradio je da je stavio samo: Citat: Marko1991: Nece da radi,izbaci par erora:Undeclared Identifier'Image1',missing operator or semicolon,could not compile used unit 'unit1.pas' Esi siguran da se pise"Image1.Picture.LoadFromFile('PrvaSlika.bmp');"(Imam delphi7 ako nesto moze da pomogne) To može da proradi (tako kako je stavio) sa kompletnim primerom koji sam stavio u poruci: Citat: A Image u primeru nije komponenta nego je TImage komponenta. Image je varijabla iliti promenljiva. Umesto imena Image za tu promenljivu može da stavi i ovako: Code: var Slika: TImage; Tako bi se promenljiva zvala Slika a ime komponente bi i dalje bilo TImage. [ savkic @ 17.01.2010. 10:18 ] @
> Šta se u Delphiju događa (baš u runtime-u) kada slika koja se referencira ne postoji? Tj, da li se momentalno izlazi iz funkcije
> (bez daljeg izvršavanja) ili se program nastavlja nakon neke poruke? Podiže se exception, prekida izvršavanje funkcije i onda RTL radi unwind sve do prvog exception handlera koji je u stanju da handluje taj exception. [ savkic @ 17.01.2010. 10:23 ] @
> Nece da radi,izbaci par erora:Undeclared Identifier'Image1',missing operator or semicolon,could not compile used unit 'unit1.pas'
Startuj novi projekat, postavi na formu dva buttona i Image (sa Additional taba) komponentu. [ Marko1991 @ 17.01.2010. 13:37 ] @
sad program oce da se pokrene al kad kliknem na dugme pojavi se greska:project project1.exe raised exception class EFOpenError with message 'cannot open file "C..."The system cannot find the file specified....
Sta mu je sad? P.S. evo koda al valjda sam dobro prekucao: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Image1: TImage; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var slika:TImage; begin slika:=TImage.Create(Form1); try slika.Parent:=Form1; slika.Align:=alClient; slika.Picture.LoadFromFile('C:\Slike\Slike1.bmp'); finally slika.Free; end; end; end. [ tkaranovic @ 17.01.2010. 15:20 ] @
Znači da treba pronaći neku sliku da bi se otvorila. :) Ovako može da se nađe i ne mora se prekucavati, može se prekopirati (copy/paste):
Code: procedure TForm1.Button1Click(Sender: TObject); var Slika: TImage; ImeFajla: string; OSliku: TOpenDialog; begin ImeFajla := 'C:\Slike\Slike1.bmp'; if not FileExists(ImeFajla) then begin showmessage('ne postoji: '+ImeFajla); OSliku := TOpenDialog.Create(Form1); try if not directoryexists(extractFilePath(ImeFajla)) then OSliku.InitialDir := 'C:\' else OSliku.InitialDir := extractFilePath(ImeFajla); ImeFajla := ''; OSliku.Filter := 'slike (*.bmp) |*.bmp'; if OSliku.Execute then ImeFajla := OSliku.FileName; finally OSliku.Free; end; end; if ImeFajla = '' then begin showmessage('Nije izbarana slika?'); exit; end; Slika := TImage.Create(Form1); try Slika.Parent := Form1; Slika.Align := alClient; Slika.Picture.LoadFromFile(ImeFajla); showmessage('Vidi li se?'); finally Slika.Free; end; end; [ tkaranovic @ 17.01.2010. 15:50 ] @
Ali pošto sada već postoji Image1 na formi bolje bi bilo:
Code: procedure TForm1.Button1Click(Sender: TObject); var ImeFajla: string; OSliku: TOpenDialog; begin ImeFajla := 'C:\Slike\Slike1.bmp'; if not FileExists(ImeFajla) then begin showmessage('ne postoji: '+ImeFajla); OSliku := TOpenDialog.Create(Form1); try if not directoryexists(extractFilePath(ImeFajla)) then OSliku.InitialDir := 'C:\' else OSliku.InitialDir := extractFilePath(ImeFajla); ImeFajla := ''; OSliku.Filter := 'slike (*.bmp) |*.bmp'; if OSliku.Execute then ImeFajla := OSliku.FileName; finally OSliku.Free; end; end; if ImeFajla = '' then begin showmessage('Nije izbarana slika?'); exit; end; Image1.Picture.LoadFromFile(ImeFajla); end; [ Marko1991 @ 18.01.2010. 23:44 ] @
E hvala vam,sad ovo radi,ali imam jos jednu molbu,malo sam prepravio predhodni kod tako da bi trebao da klikom na dugme otvori folder sa text dokumentima i da u listbox-u ispise tekst koji se nalazi u izabranom dokumentu.Od svega toga kad startujem program i kliknem na dugme on otvori open dialog,pronadjem txt dokument sto mi treba i kad kliknem na open u listbox mi ispise samo putanju.Evo koda pa mi recite de je greska.
procedure TForm1.Button1Click(Sender: TObject); var ImeFajla: string; OTekst: TOpenDialog; begin OTekst := TOpenDialog.Create(Form1); try if not directoryexists(extractFilePath(ImeFajla)) then OTekst.InitialDir := 'C:\' else OTekst.InitialDir := extractFilePath(ImeFajla); ImeFajla := ''; OTekst.Filter := 'Dnevnik (*.txt) |*.txt'; if OTekst.Execute then ImeFajla := OTekst.FileName; finally end; ListBox1.Items.Add(ImeFajla); end; end. P.S.Trebalo bi i da napisem kod za snimanje txt-a(probacu sam da ga sastavim od ovog koda pa ako ne uspem o5 cu zatraziti vasu pomoc), ali, u listbox-u ne moze da se pise kad se startuje program,pa mi recite koju komponentu da uzmem umesto listbox-a?Takodje cu pokusati da nadjem kod za font,boju slova i tako to. Zahvaljujem u napred [ rambo @ 19.01.2010. 01:23 ] @
Prvo, sto se komponente tiče, ako ćeš da učitavaš običan txt fajl, onda trebaš da koristiš TMemo. Ako želiš da formatiraš tekst (slično kao u WinWord), onda trebaš da koristiš TRichEdit.
Što se učitavanaj fajla tiče, TOpenDialog ti samo vraća fajl koji si preko njega izabrao, on ne "učitava" nigde. Da bi učitao txt fajl u TMemo, nakon što izabereš fajl, moraš da "ručno" učitaš njegov sadržaj. Dodaj ovo na odgovarajuće mesto u svom kodu: Code: if OTekst.Execute then Memo1.Lines.LoadFromFile(OText.FileName); Ovo ti je ujedno i najlakši način da učitaš tekst u Memo komponentu. Za snimanje (nakon što si izmenio tekst), koristiš metod SaveToFile. [ Marko1991 @ 20.01.2010. 00:44 ] @
Otvaranje fajla radi,e sad zanima me dal' bih moglo da se odradi da otvara i word dokument,cemu sluzi zadnja kartia(servers,u njoj ima WordDocument,moze li se to iskoristiti umesto memo box-a za editovanje txt-a{font velicina...})?
Nasao sam neki kod koji bi trebalo da snima al nesto nece,stalno mu fale neke deklaracije. Evo koda Code: if (SaveDialog1.FileName <> '') or SaveDialog1.Execute then Memo1.Lines.SaveToFile(SaveDialog1.FileName) [ captPicard @ 25.05.2010. 07:45 ] @
Ovako (dodaj ComObj u Uses listu)
Code: WordApp := CreateOLEObject('Word.Application'); sPath := 'C:\Folder\Test.doc'; WordApp.Documents.Open(sPath); . {tu možeš iz Delphi-a uređivati dokument} //primjer zamjene teksta (replace) // WordApp.Selection.Find.ClearFormatting; // WordApp.Selection.Find.Forward := True; // WordApp.Selection.Find.MatchAllWordForms := False; // WordApp.Selection.Find.MatchCase := False; // WordApp.Selection.Find.MatchWildcards := False; // WordApp.Selection.Find.MatchSoundsLike := False; // WordApp.Selection.Find.MatchWholeWord := False; // WordApp.Selection.Find.MatchFuzzy := False; // WordApp.Selection.Find.Wrap := wdFindContinue; // WordApp.Selection.Find.Format := False; // WordApp.Selection.Find.Text := '|tekst|'; // WordApp.Selection.Find.Replacement.Text := ''neki tekst'; // WordApp.Selection.Find.Execute(Replace := wdReplaceAll); //ako ne znaš kako nešto napraviti, snimi makro u Wordu i pogledaj šta je macro napisao, puno če ti pomoči . . WordApp.ActiveDocument.Close; WordApp.Quit; WordApp := Unassigned; a može i ovako (otvaranje MS Word dokumenta): Code: ShellExecute(Handle, 'open', PChar(sPutanja), nil, nil, SW_SHOWNORMAL); Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|