Skocz do zawartości
Zamknięcie Forum PC LAB

Szanowny Użytkowniku,

Informujemy, że za 30 dni tj. 30 listopada 2024 r. serwis internetowy Forum PC LAB zostanie zamknięty.

Administrator Serwisu Forum PC LAB - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie: wypowiada całość usług Serwisu Forum PC LAB z zachowaniem miesięcznego okresu wypowiedzenia.

Administrator Serwisu Forum PC LAB informuje, że:

  1. Z dniem 29 listopada 2024 r. zakończy się świadczenie wszystkich usług Serwisu Forum PC LAB. Ważną przyczyną uzasadniającą wypowiedzenie jest zamknięcie Serwisu Forum PC LAB
  2. Dotychczas zamowione przez Użytkownika usługi Serwisu Forum PC LAB będą świadczone w okresie wypowiedzenia tj. do dnia 29 listopada 2024 r.
  3. Po ogłoszeniu zamknięcia Serwisu Forum od dnia 30 października 2024 r. zakładanie nowych kont w serwisie Forum PC LAB nie będzie możliwe
  4. Wraz z zamknięciem Serwisu Forum PC LAB, tj. dnia 29 listopada 2024 r. nie będzie już dostępny katalog treści Forum PC LAB. Do tego czasu Użytkownicy Forum PC LAB mają dostęp do swoich treści w zakładce "Profil", gdzie mają możliwość ich skopiowania lub archiwizowania w formie screenshotów.
  5. Administrator danych osobowych Użytkowników - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie zapewnia realizację praw podmiotów danych osobowych przez cały okres świadczenia usług Serwisu Forum PC LAB. Szczegółowe informacje znajdziesz w Polityce Prywatności

Administrator informuje, iż wraz z zamknięciem Serwisu Forum PC LAB, dane osobowe Użytkowników Serwisu Forum PC LAB zostaną trwale usunięte ze względu na brak podstawy ich dalszego przetwarzania. Proces trwałego usuwania danych z kopii zapasowych może przekroczyć termin zamknięcia Forum PC LAB o kilka miesięcy. Wyjątek może stanowić przetwarzanie danych użytkownika do czasu zakończenia toczących się postepowań.

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

VAMET

Prosta aplikacja pod Windows

Rekomendowane odpowiedzi

Witam uprzejmie

 

Jestem bliżej niż początkujący, ponieważ na razie mam jedynie plan, jak miałaby wyglądać moja aplikacja.

Niestety jedyny program do "programowania", to z czasów dzieciństwa Turbo Pascal :) Można się już śmiać.

Mimo wszystko chciałbym zasięgnąć wiedzy - z pewnością posiadacie masę doświadczeń i jak tylko przeczytacie, o co mi chodzi, to będziecie wiedzieli, jak mi doradzić.

 

Zaczynam króciutki opis, postaram się wytłumaczyć tak, by nie było zawile.

Odpowiedź, jaką oczekiwałbym pod koniec opisu, to czy można taką aplikację łatwo (czytaj dla bardzo początkującego człowieka) i czym w czym stworzyć?

 

Widzę to tak, chciałbym odpalić aplikację plikiem wykonywalnym .exe, nazwijmy to ProjectZ.exe (jak zwał, tak zwał).

Po uruchomieniu okienko będzie odpalało się w trybie pełnego ekranu (fullscreen) - bez przycisków minimalizacji, maksymalizacji i zamknięcia okna.

Pojawi się obrazek na pełnym ekranie 1920x1080 .jpg lub .png. Teraz klikając strzałką w lewo lub w prawo, sprawię, że pokaże się poprzedni/kolejny obrazek.

 

Każdy z obrazków będzie miał tag/id indywidualne. Czyli powiedzmy, że odpalam aplikację na fullscreen i widać obrazek ID_1.jpg.

Teraz mogę na konkretnym obrazku nacisnąć przycisk ENTER. Jak nacisnę ENTER na obrazku ID_1.jpg, to zostanie odpaloną aplikacja zewnętrzna np.:

C:\Program Files (x86)\Nazwa_Aplikacji\Plik_Wykonawczy.exe "D:\ID_1\"

 

Aplikacja z komendy zawsze posiada identyczną ścieżkę i plik wykonawczy, zmienia się jedynie to co jest w "". Czyli literka dysku, w przykładzie D:\ oraz katalog jest nazwą obrazka ID_1, czyli obrazek ID_1 jak nazywa się PUPA.jpg, to ścieżka będzie D:\PUPA\

 

W zasadzie to prawie wszystko, chciałbym, żeby obrazki były wyświetlane według kolejności ID zdefiniowanych w jakimś pliku np.: config.xml czy inny twór.

 

W pliku C:\Program Files (x86)\ProjectZ\config.xml powinny być zdefiniowane parametry dla ID_1:

ID_1_ścieżka_katalogu C:\Program Files (x86)\Nazwa_Aplikacji\Plik_Wykonawczy.exe "D:\ID_1\"

ID_1_ścieżka_obrazka C:\Program Files (x86)\ProjectZ\images\ID_1.jpg

...

ID_241_ścieżka_katalogu C:\Program Files (x86)\Nazwa_Aplikacji\Plik_Wykonawczy.exe "D:\ID_241\"

ID_2411_ścieżka_obrazka C:\Program Files (x86)\ProjectZ\images\ID_241.jpg

 

Jak naciskam ENTER w aplikacji ProjectZ, to odpala komendę ID_1_ścieżka_katalogu. Włącza się zewnętrzna aplikacja z komendy. Po zamknięciu tej aplikacji. Mam cały czas moją aplikację ProjectZ otwartą dokładnie w tym samym miejscu, zanim wcisnąłem ENTER i dalej mogę wybrać inny obrazek klikając strzałkę w lewo/prawo i wybrać ENTER i znowu odpali mi ID_poprzedni/kolejny_numer_obrazka_ścieżka_katalogu

 

Mam nadzieję, że nie zagmatwałem tego za bardzo. Byłbym wdzięczny za podpowiedź, czy się da, w czym to zrobić i czy dam sobie radę, jako początkujący, a raczej raczkujący.

 

Pozdrawiam serdecznie.

 

EDIT

 

Zrobiłbym to jako stronę WWW odpalaną lokalnie na komputerze + baza danych, ale raczej nie odpalę aplikacji zewnętrznej .exe z wysłaną zmienną.

 

Z poważaniem

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Da się to łatwo zrobić, ale trzeba mieć jakąś wiedzę na temat wybranego środowiska. Ja bym polecił Ci Delphi 7, ew. jak widziałeś kiedyś C++ to Visual Studio, bo to analogicznie działa, choć bardziej przejrzyste jest Delphi dla początkującego.

 

Co do samego wykonania to podpowiem, że potrzebujesz do obrazków w Delphi komponentu TImage, aby przechwytywać naciskanie przycisków to masz na formie zdarzenie "OnKeyDown" a nazwa przyciskow to VK_LEFT, VK_RIGHT.

Jeśli chodzi o pełny ekran to we właściwościach formy możesz ustawić ws_Maximized oraz BorderStyle na bsNone i będzie tak jak mówiłeś. DO tego wszystkiego będziesz jeszcze potrzebował umieć obsługiwać pliki tekstowe, aby wczytywać dane "TextFile".

 

Tak czy siak będziesz musiał trochę się nauczyć o np. Delphi.

Jeżeli chcesz to mógłbym dla Ciebie wykonać ten projekt za niewielką opłatą, zajmuje się pisaniem programów na zlecenia.

Moja strona w stopce :-)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Witam uprzejmie

 

Nauczyłem się prostej aplikacji logowania za pomocą użytkownika i hasła, po wciśnięciu ENTER, przechodzi na inne okno (form2 z form1).

Jakbym teraz chciał mieć z tego programu plik wykonywalny .exe, to w jaki sposób to uczynić pod Delphi 7?

 

Dziękuję za cenne uwagi, potrafię już wyświetlić okno na FullScreen bez borderów :)

Jest jakieś polecenie, że na OnKeyPress powiedzmy SPACJA, okno się zamyka?

Pozdrawiam serdecznie.

 

Z poważaniem

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

if Key = #32 then Close; //zamykanie okna

 

No .exe standardowo dostajesz przy kompilowaniu (F9).

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Witam uprzejmie

 

if Key = #13 then Close; //zamykanie okna

 

procedure TForm1.VK_SPACE(Sender: TObject; var Key: Char);

begin

Application.Terminate;

end;

 

Zrobiłem tak, jak wyżej w cytacie i okno na fullscreen zamyka się po wciśnięciu dowolnego przycisku, a nie SPACE, jak zdefiniowałem.

Dlaczego? :) Jest to błędna metoda?

 

Z poważaniem

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

No bo nigdzie nie sprawdzasz co zostało wciśnięte, dałeś sobie nazwę procedury "VK_SPACE", a to nie ma znaczenia co tam podasz. Napisałem Ci wyżej jaki warunek ma być.

 

EDIT:

w OnKeyPress powinno być

if key = ' ' then Close;

 

lub w OnKeyDown

if key = VK_SPACE then Close;

 

 

We wcześniejszym poście pomyliło mi się z enterem :) Znak entera to #13, a spacji #32

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Witam uprzejmie

 

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs;

 

type

TForm1 = class(TForm)

procedure VK_SPACE(Sender: TObject; var Key: Word; Shift: TShiftState);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

procedure TForm1.VK_SPACE(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if key = VK_SPACE then Close;

end;

 

end.

 

Przy kompilacji po then wypisuje: Not enough actual parameters. Could not compile used unit "Unit1.pas"

 

Z poważaniem

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Bo dałeś nazwę VK_SPACE, która teraz się miesza z identyfikatorem przycisku.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Witam uprzejmie

 

Czy żeby wyświetlić nowe zdjęcie po wciśnięciu przycisku w lewo/prawo, to muszę przywołać form2 dla drugiego zdjęcia, a dla trzeciego form3 itd?

Czyli praktycznie będzie wyświetlał dla nowego zdjęcia nowe okno? ;)

Sorka za dziwne pytania, ale to moje 1.5h z Delphi 7 ;)

Pozdrawiam serdecznie.

 

Z poważaniem

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

nie, obiekt image czy picturebox wstawiasz na środek form1, jak się ma powiększać na pełny ekran, to w wydarzeniu create formy dajesz przesunięcie do 0,0 i zmianę szerokości i wysokości na szerokość i wysokość ekranu (forma + picturebox/image)

 

po otrzymaniu klawisza sprawdzasz kod, jeśli strzałki, to na kontrolce z obrazkiem odpalasz loadimage (czy co tam jest akurat pod ręką).

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

nie, obiekt image czy picturebox wstawiasz na środek form1, jak się ma powiększać na pełny ekran, to w wydarzeniu create formy dajesz przesunięcie do 0,0 i zmianę szerokości i wysokości na szerokość i wysokość ekranu (forma + picturebox/image)

 

Trochę karkołomne, wystarczy dać TImage na formę ustawić mu Align - alClient, Stretch=true, Proportional = true, Center = true.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Witam uprzejmie

 

Wyświetlenie obrazka na pełnym ekranie, to potrafię.

Nie wiem, jak wyświetlić drugi obrazek w tym samym oknie po wciśnięciu np.: strzałki w lewo/w prawo czy też dowolnego przycisku.

Pozdrawiam serdecznie.

 

Z poważaniem

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Wolę nie zdawać się za bardzo na domyślne zachowanie Delphi.

 

 

Do formy masz przyczepione reagowanie na klawisz, sprawdzasz sobie czy jest klawisz zamknięcia, więc równie dobrze możesz dodać sprawdzenie czy jest strzałka. Jeśli jest strzałka, to na kontrolce z obrazkiem wywołujesz ładowanie pliku (ctrl+spacja albo ctrl+enter po kropce -> timage1.[tutaj] ). Dodajesz sprawdzenie czy można przesunąć w lewo czy w prawo (początek i koniec listy obrazków). Samą listę zrobisz sobie np. listując katalog (http://www.google.pl/search?q=delphi+list+files), ew. jeśli obrazki na sztywno, to ponumeruj od 0 i wstaw ograniczenie górne.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Witam uprzejmie

 

Dziękuję za wskazówki, jednak męczę się z tym od ponad godziny i jestem za głupi.

Nie rozumiem:

(...) to na kontrolce z obrazkiem wywołujesz ładowanie pliku (ctrl+spacja albo ctrl+enter po kropce -> timage1.[tutaj] ).

 

Mógłbym Cię prosić o przykładową porcję kodu i wytłumaczenie bardziej łopatologiczne?

Dziękuję.

 

Z poważaniem

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Witam uprzejmie

 

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, jpeg, ExtCtrls;

type
 TForm1 = class(TForm)
 Image1: TImage;
   procedure FormKeyDown(Sender: TObject; var Key: Word;
     Shift: TShiftState);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 if key=VK_ESCAPE then Close;
 if key=VK_RIGHT then Image1.Picture.LoadFromFile('grafika1.jpg');
end;

end.

 

...czyli coś w tym kierunku. Tylko teraz zamiast grafika1.jpg dać zmienną, która będzie wskazywała na listowane w katalogu inne grafiki? :)

Pozdrawiam serdecznie.

 

Z poważaniem

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Rób wcięcia w kodzie.

 

A i właśnie. Delphi jest martwe. Nie używaj tego(zwłaszcza, że IDE pewnie musiałeś ukraść).

Ze swojej strony mogę polecić Qt na C++. Dużo fajnych bajerów i świetny help.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Rób wcięcia w kodzie.

 

A i właśnie. Delphi jest martwe. Nie używaj tego(zwłaszcza, że IDE pewnie musiałeś ukraść).

Ze swojej strony mogę polecić Qt na C++. Dużo fajnych bajerów i świetny help.

 

Delphi zdecydowanie nie jest martwe :). Delphi 7 personal jest darmowe.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Delphi zdecydowanie nie jest martwe :). Delphi 7 personal jest darmowe.

Wiem, że kiedyś było, ale teraz to nie bardzo - nie ma gdzie keya zdobyć.

Zresztą Delphi 7 ma (wg. wikipedii) 10 lat(jest tam chociaż podpowiadanie kodu?), więc nie widzę sensu w to brnąć

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tak, jest podpowiadanie - o którym ktoś pisał wyżej.

 

Z tego co widać to nigdy nie używałeś Delphi 7, więc nie wiem czemu piszesz opinie na jego temat. Znam wiele osób, które w tym piszą mimo, że profesjonalnie zajmują się językami typu Java, C++ itp. Po prostu jest to miły i przyjemny język, w sieci jest mnóstwo materiałów do niego, komponentów itd. No i napisze się w nim wszystko to co w C++ czy innym języku, jeśli chodzi o aplikacje użytkowe, ponoć do programowania procesorów lepsze są inne języki.

 

Idąc dalej, Delphi jest cały czas rozwijane i posiada najnowsze technologie:

http://www.embarcadero.com.pl/produkty/delphi/

Programowanie w chmurze itd.

 

Ja na co dzień piszę w Delphi, bo lubię ten język, przykładowe moje projekty na stronie w stopce.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Witam uprzejmie

 

Pierwszy raz się stykam z Delphi 7, dzisiaj się nabluzgałem :) ...ale powoli rozgryzam ;)

Tutaj link do mojej aplikacji: TAGAT.

To tylko 5% tego, co chciałbym, żeby było.

 

Należy rozpakować pod katalog dysku C:\ są tam 3 pliki, .exe i dwie grafiki.

Otworzy się na pełnym ekranie, należy nacisnąć strzałkę w prawo ;) a żeby wyjść ESC :)

Będzie to program :) ...kolekcji filmów odpalanych przez aplikację zewnętrzną, jak TMT3/5, PowerDVD.

Jaka rola programu, służy do HTPC. Działa najlepiej pod 1920x1080 (FullHD). Jak się wyświetli obraz filmu, będzie się w przyszłości (jak wcześniej nie stracę cierpliwości) naciskało ENTER i odpali się od razu konkretny film.

Niestety XBMC nie za bardzo mi podeszło.

Najpierw muszę zrobić tak, żeby kolejne wciśnięcie strzałki w prawo pokazywało drugi .jpg, jak już to zrobię, to dalej analogicznie pójdzie :)

Dostałem tutaj cenne wskazówki, które jutro będę wdrażał :D ...mam nadzieję, że owocnie :)

Jak już uda mi się strzałkowanie w prawo i w lewo, to zajmę się ENTERem na danym obrazku i odpaleniem zewnętrznej aplikacji, jak pisałem w pierwszym poście.

:) Wyobrażam sobie, jaką niektórzy, jak nie większość mają radochę i ubaw, że nie potrafię napisać tak prostej aplikacji :)

...ale nie poddaję się :)

 

Pozdrawiam serdecznie.

 

PS. Jak Wam się podoba szablon do filmów?

 

Z poważaniem

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

[...]

Nie traktuj tego osobiście, po prostu się dziwię: Co takiego jest fajnego w 10 letnim i płatnym(obecnie) IDE, że je tak proponujesz?

 

 

[...]

Poszukaj funkcji która zeskanuje Ci zawartość folderu. Będziesz miał wtedy listę obrazków bez potrzeby ręcznego wpisywania ścieżki (tak przy okazji to zamiast absolutnego "C:/AVATAR.jpg" użyj "AVATAR.jpg").

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Po prostu jest przyjemne do nauki, a jeszcze proponowałem ew. Visual Studio do C++. To VAMET wybrał Delphi :).

 

Co do płatności to ja mam jeszcze key'a z czasów gdy można było się rejestrować. Jakby do nich napisać to pewnie da się go jeszcze jakość zdobyć legalnie.

 

Visual Studio Express też jest chyba darmowe, ja mam wszystkie wersje za free z Microsoft Academic Alliance, osobiście używam 2010 Ultimate.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Witam uprzejmie

 

Poszukaj funkcji która zeskanuje Ci zawartość folderu. Będziesz miał wtedy listę obrazków bez potrzeby ręcznego wpisywania ścieżki (tak przy okazji to zamiast absolutnego "C:/AVATAR.jpg" użyj "AVATAR.jpg").

 

Już poprawiłem na bez C:\ :) Dzięki za cenną uwagę.

A co do zeskanowania zawartości folderu. Właśnie tutaj walczę z tym od 14 :)

Co rozumiesz poprzez zeskanowanie, czy funkcję FindFirst/Next?

Czyli żeby wyświetlać (poprawcie mnie, jak jestem w błędzie) kolejne obrazki, to w miejsce:

 

if Key=VK_RIGHT then Image1.Picture.LoadFromFile('AVATAR.jpg');

 

'AVATAR.jpg' muszą być wstawiane kolejne nazwy plików .jpg w danym katalogu.

Czyli muszę jakoś, nie wiem, "pobrać nazwy" tych plików i trzymać je w jakimś buforze?

Następnie całą tą linijkę jakoś zapętlić, żeby wstawiał tam kolejną nazwę znalezioną w folderze?

Zamiast tego 'AVATAR.jpg' ma być jedna zmienna, która jest wynikiem szukania tego folderu?

Jakaś podpowiedź jeszcze?

Pozdrawiam serdecznie.

 

EDIT

 

var
 Form1: TForm1;
 SearchRec: TSearchRec;
 Result: Integer;

implementation

{$R *.dfm}

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 Result := FindFirst('*.jpg', faAnyFile, SearchRec);
 while Result = 0 do
 begin
   Result := FindNext(SearchRec);
 end;
 FindClose(SearchRec);

 if Key=VK_ESCAPE then Close;
 if Key=VK_RIGHT then Image1.Picture.LoadFromFile(Result);
end;

 

Tylko że Result mam jako Integer, a powinno być chyba String?

E, to się kupy nie trzyma ;)

 

Z poważaniem

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

listbox na formę, do formy przyczepiasz event "oncreate" (czy create, już nie pamiętam jak to się nazywało), w środku var searchrec; i pętla po elementach; w searchrec.name masz nazwę pliku, wstawiasz to do listboxa jako kolejny element

 

globalna zmienna: index integer ;

strzałka w lewo: if( index > 0 ) index := index - 1 ;

strzałka w prawo: if( index < listbox.count - 1 ) index := index + 1 ;

i na koniec coś w stylu:

loadfromfile( listbox.item[index] )

 

znajdź sobie metodę pobierania z listboxa n-tego elementu, może z tym itemem zadziała; ważne, żeby otrzymany element miał typ string

 

http://4programmers.net/Delphi/FindFirst

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...