Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - ProgressBar GANZ am Anfang im Extra-Formular anzeigen


kiwicht - Mi 22.01.03 20:48
Titel: ProgressBar GANZ am Anfang im Extra-Formular anzeigen
Hallo,

da mein Programm jetzt schon gigantische Ausmaße angenommen hat, braucht es natürlich seine Zeit bis ich die .EXE geladen wird.
Um dem Anwender aber mitzuteilen,
1. DASS etwas geschieht (ProgressBar)
2. WAS gerade geschieht (StatusBar oder Label mit wechselndem Inhalt)

suche ich jetzt eine Möglichkeit, gleich am Anfang eine kleine Form mit einer ProgressBar und einem Labe o.ä. anzuzeigen.
Danach sollen dann die ganzen anderen Formen (u. Datenbanken) geladen werden.

Wisst ihr vielleicht ob´s da irgendeine Möglichkeit gibt?

mfg
kiwicht


ps:
Im OnCreate-Ereigniss meiner Hauptform am Anfang das o.g. "Status-Form" anzeigen hab ich schon probiert... bringt nix...
Falls einer von euch BulletProof FTPServer kennt, da ist das so ähnlich mit der Progressbar am Anfang.


Tino - Do 23.01.03 10:39

Hi,

ich hab hier mal einen FAQ-Beitrag geschrieben: ...einen SplashScreen anzeigen? [http://www.delphi-forum.de/viewtopic.php?p=31550].

Habs aber noch nicht getestet. Wäre schön wenn Du mir eben antwortest ob es geklappt hat!

Gruß
TINO


Delete - Do 23.01.03 10:44

Tino hat folgendes geschrieben:
ich hab hier mal einen FAQ-Beitrag geschrieben ... Habs aber noch nicht getestet.

:? Quasi auf Verdacht ... :wink:

Zitat:
Wäre schön wenn Du mir eben antwortest ob es geklappt hat!

Tut es, auch wenn mein Beispiel so aussieht:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
with TWaitForm.Create(nil) do
try
  ActionLabel.Caption := 'initialisiere'; // Label auf der "WaitForm"
  pb1.Position := 0; // Progressbar auf der "WaitForm"
  Show;
  Update;

  Application.CreateForm(TButlerForm, ButlerForm); // 1. Form
  pb1.Position := MulDiv( 1,100,10); // Progressbar anpassen

  { ... }

  Application.CreateForm(TPropertiesTableForm, PropertiesTableForm); // 10. Form
  pb1.Position := MulDiv(10,100,10); // Progressbar
finally
  Free;
end;
Application.Run;

Und´s ging ja um den Progressbar im Speziellen. :)


kiwicht - Do 23.01.03 11:26

herrrrlich.. es funzt... :D

einen herzlichen Dank!

mfg
kiwicht


kiwicht - Fr 24.01.03 11:21

Jupp.. funktschioniert ganz wunderbar! Herzlichen Dank!

Das einzige was nit geht: Ich kann keine Komponenten zusätzlich in der Form platzieren, zum Beispiel das Logo von meinem programm, falls ihr da vielleicht noch eine Idee habt?

mfg & thx
kiwicht


Tino - Fr 24.01.03 12:00

kiwicht hat folgendes geschrieben:
Ich kann keine Komponenten zusätzlich in der Form platzieren, zum Beispiel das Logo von meinem programmt

Wieso nicht?

Gruß
TINO


kiwicht - Fr 24.01.03 13:11

keine Ahnung...
platziere ich z.B. ein Button (zum Testen), dann seh ich die Umrisse vom Button, und da wo eigentlich der Button sein sollte, kann ich "durchsehen", ich sehe also den Windows-Hintergrund...

eigentlich ja n netter Effekt, aber ich im Moment eher unpassend.. :D


foxy - Mo 27.01.03 15:45

hätt da noch ne frage die operation MulDiv ... was iss das????? vorallem muss ich da eine unit in uses einfügen das er das erkennt? er sagt nämlich undefinierter ausdruck...


grayfox - Mo 27.01.03 19:12

hallo heiko!

einfach 'MulDiv' in den editor tippen, den cursor draufstellen und
'F1' drücken...
Zitat:
The MulDiv function multiplies two 32-bit values and then divides the 64-bit result by a third 32-bit value. The return value is rounded up or down to the nearest integer.

von einer extra unit steht dort nichts. aber ich habs nicht getestet, obs funktioniert...

mfg, stefan

ps: es hat mir keine ruhe gelassen, also hab ichs doch getestet :)

Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject);
var
  position: LongInt;
begin
  position:= MulDiv(1,100,10);
  Label1.Caption:= IntToStr(position);
end;

wider erwarten kommt '10' heraus *gg*
und das ganz ohne zusätzliche unit einbinden..


foxy - Di 28.01.03 09:07

hmm ja aber bei mir zeigt er unbekannte variable MulDiv, weil ich muss das ja in die Projekt .dfm schreiben... :( weis ja au nit was das ist .... wär nett wenn mir das einer sagen könnt :/


kiwicht - Di 28.01.03 10:04

:oops: ähmm... und wie krieg ich, nebenbei bemerkt, die bilder in mein splash-form? :roll:


foxy - Di 28.01.03 10:07

kiwich vielleicht mit ner Img komponente?? ... ich habs so versucht nur hab ein anderes Problem, bis ich den screen astesten kann :/ ... delphi compeliert nimma :(


kiwicht - Di 28.01.03 11:23

das problem hatte ich auch erst... hast du schon den link von tino probiert...

http://www.delphi-forum.de/viewtopic.php?p=31550


mit der img-komp. klappts ja nicht.... hab ja nu schoa alles durch... :(


foxy - Di 28.01.03 11:33

jaja habe ich scho nur ich hab das so gemacht, wie oben im bsp, wegen der Progressbar ;) ... hat aber einen anderen grund warum mein Compiler nicht geht, wegen einer scanner komponente, die sagt immer das ein gerät nicht angeschlossen ist dazu gibt es aber auch eine topic
http://www.delphi-forum.de/viewtopic.php?t=6526
schau ma rein und hilf mir weiter :D


kiwicht - Di 28.01.03 12:48

:oops: ... da seh ich ja nu garnich durch... bin froh das ich mein program noch so halbwegs kapiere... :D

andere frage:

ich hab jetzt versucht in meinem programm ganz am anfang, dort wor die ganzen Forms 'created' werden, unter uses vor den ganzen 'pas-dateien' noch Graphics und jpeg einzubinden. Graphics klappt, aber jpegs nicht, weil er die jpeg.dcu sucht, obwohl ich die in´s programm verzeichniss kopiert habe... weiß einer rat?


foxy - Di 28.01.03 13:00

du kannst keine jpgs in delphi einfach so einlagern.
es gibt soweit ich weis keine kombo, die direkt jpgs ausgibt aber du kannst diese per code zu .bmp umwandeln dann müsste es gehn der code mom suche ihn ...


foxy - Di 28.01.03 13:02

hier ist ein link http://www.swissdelphicenter.ch/de/showcode.php?id=20
hoffe das bringt dich weiter


kiwicht - Di 28.01.03 13:06

nöö... :( daran lags nicht. ich kann das bild in meinem hauptformular, was ja nach meinem Splash-Screen geladen wird, auch ganz normal lesen.

Aber halt nicht im Splash-Screen.... im Splash-Screen seh ich, und das ist ja das seltsame, NUR die ProgressBar. Alle anderen Komponenten zeigt er nicht an. Egal welche... ob Label oder Button oder StatusBar... Nix!

Muss ich erst irgendwo noch was einbinden??


foxy - Di 28.01.03 13:13

haste schon versucht Jpeg einzubinden?? wenn ja wie??
also ich meine in der .dfm
ich kann nich sagen ob ich was sehe ich weis nich ma ob mein splash geht bis ich weis woran das liegt, wegen dem scanteil da :(

also viel weiterhelfen kann ich dir dabei nicht :/


smiegel - Di 28.01.03 13:17

Hallo,

folgend ein Ausschnitt aus einem meiner Programme, die einen Splas-Screen benutzten:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
  ...
  If prog_ini.ShowTitel Then
  begin
    TitelWnd:=TTitelWnd.Create(Application);
    TitelWnd.Show;
    Application.ProcessMessages; // --> Wichtig, sonst wird nichts angezeigt!!
  end; // if
  Application.CreateForm(TMainForm, MainForm);
  Application.Run;
  ...


kiwicht - Di 28.01.03 13:27

:D :D :D Jippie! Das wars SMIEGEL, du bist mein Retter! Es klappt und ich seh mein Bild:

Application.ProcessMessages ist das Ei des Kolumbus´!

Allerdings frag ich mich: WIESO? Die progress-bar hat er doch angezeigt, warum aber sonst nix anderes? :roll:

@ hast du schon ma probiert deine scan-routine zum test einmal zu entfernen, und dann zu testen, um sicher zu gehen das die wirklich schuld ist? wenn ja, hast du schon mal probiert, n scanner anzuschliessen, damit dir deine routine keinen fehler meldet?

mfg & ein großes Dankeschön

kiwicht


smiegel - Di 28.01.03 13:33

Hallo,

@kiwicht
Zitat:

WIESO? Die progress-bar hat er doch angezeigt ...


weil die wahrscheinlich während des Startvorgangs ständig aktualisiert wird.


foxy - Di 28.01.03 13:34

teils ja teils nein aber ich bin an dem punkt, wo ich das jetzt mache =)

STRG+A ---> DEL ;)


kiwicht - Di 28.01.03 14:32

Zitat:

weil die wahrscheinlich während des Startvorgangs ständig aktualisiert wird.


:shock: ... hmm.. das klingt mehr als einleuchtend...... naja, ich bin ja noch in der lernphase ... :D :D

Zitat:

STRG+A ---> DEL


hehe, diese tastenkombination ist mir WOHL bekannt.... möcht nich wissen wie oft ich bei mir kompletten code gelöscht hab, weil ich kein bock mehr auf experimente hatte.... aber das geht jetzt zu sehr ins OffTopic...


foxy - Di 28.01.03 14:53

käääs ;)
aber hat dennoch nix gebracht ... fehler ist immer noch da .... hab schon andere Progs versucht zu compelieren GING!!!
also muss es irgendwie daran liegen