AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Eigenschaften eines Objektes für ein paar Sekunden zuweisen

Eigenschaften eines Objektes für ein paar Sekunden zuweisen

Ein Thema von Delphiturbo · begonnen am 12. Mai 2008 · letzter Beitrag vom 12. Mai 2008
Antwort Antwort
Delphiturbo
(Gast)

n/a Beiträge
 
#1

Eigenschaften eines Objektes für ein paar Sekunden zuweisen

  Alt 12. Mai 2008, 16:13
Hallo

ich möchte die farbe von dem Button für nur eine Sekunde (Rot)
und dann wieder die Originale Farbe zuweisen

Delphi-Quellcode:
Button1.Color:=clRed;
//sleep(2000); // schlecht wie Delay() auch !
Pausen(1000); // das ist eine Funktion wie Sleep
Button1.Color:=clWhite;
Es funktioniert aber !!!
während dieser 2 Sekunden wird alles gefroren
das heißt mein Programm ist damit für 2 Sekunden lang tot

Wie kann ich die Farbe für 2 Sekunden ändern ohne das Programm zu stören?
Oder muss ich unbedingt einen Timer verwenden ?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Eigenschaften eines Objektes für ein paar Sekunden zuwei

  Alt 12. Mai 2008, 16:16
Wie sieht Pause() aus?
Markus Kinzler
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Eigenschaften eines Objektes für ein paar Sekunden zuwei

  Alt 12. Mai 2008, 16:16
versuchs mal mit DelayDelay aus der CodeLib
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Eigenschaften eines Objektes für ein paar Sekunden zuwei

  Alt 12. Mai 2008, 16:16
Timer oder Delay.

Für was soll das gut sein?
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#5

Re: Eigenschaften eines Objektes für ein paar Sekunden zuwei

  Alt 12. Mai 2008, 16:23
Hi,

was schon in der Frage von mkinzler steckt (und wahrscheinlich Dein Problem ist), Warten kann die weitere Abarbeitung blockieren. Typische Beispiele währen eben sleep (da der aufrufende Thread schlafen gelegt wird, ganz ungünstig im Main - Thread) bzw. auch das Warten in einer While-Schleife (die z.B. per GetTickCount eine bestimmte Zeit abwartet).

Es gibt dazu gleich verschiedene Lösungsansätze. Etwas unschön (aber funktionsfähig) ist die Verwendung einer Schleife, in der Du ständig Application.ProcessMessages aufrufst, also z.B.

Delphi-Quellcode:
procedure wait(const delay: Cardinal);
var time: DWORD;
begin
  time := GetTickCount;
  while (GetTickCount - time) < delay do
    Application.ProcessMessages;
end;
Alternativ dazu kannst Du natürlich das Warten (bzw. auch das komplette Färben) in einen anderen Thread auslagern (achtung, der muss beim Zugriff auf den Button mit dem VCL - Mainthread synchronisiert werden). Legst Du den mittels sleep schlafen hat das keinen Effekt auf das restiliche Programm.

Eine weitere Möglichkeit (vielleicht die einfachste und schönste) ist es Delay zuverwenden (einfach mal in der Dp suchen). Da hat mal jmd. eine Funktion gepostet, die auf MsgWaitForMultipleObjects wartet, aber durch alle Ereignisse "aufgeweckt" wird, die Ereignisse abarbeitet und das Warten fortsetzt.

Gruß,
Der Unwissende
  Mit Zitat antworten Zitat
Delphiturbo
(Gast)

n/a Beiträge
 
#6

Re: Eigenschaften eines Objektes für ein paar Sekunden zuwei

  Alt 12. Mai 2008, 16:32
Ich habe Deine Funktion wait und auch Delay verwendet
Alle blockieren das Programm
Das Button ruft einen Link
ich gebe das Button mit Delay oder mit einer Funktion die Farbe rot
solange das Button rot ist, ist das Button immer tot und ruft keinen Link auf !
ist die Farbe weg, dann funktioniert das Button wieder !!!

Ich würde vielleicht einen Timer als letzte Lösung nehmen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Eigenschaften eines Objektes für ein paar Sekunden zuwei

  Alt 12. Mai 2008, 16:33
Dann Poste doch mal den Code deiner Funktion
Markus Kinzler
  Mit Zitat antworten Zitat
Delphiturbo
(Gast)

n/a Beiträge
 
#8

Re: Eigenschaften eines Objektes für ein paar Sekunden zuwei

  Alt 12. Mai 2008, 16:44
Zitat von mkinzler:
Dann Poste doch mal den Code deiner Funktion
Delphi-Quellcode:
procedure Pausen(Laps : Cardinal);
var
Debe,fine : Cardinal;
begin
Debe := gettickcount;
  Fine := debe + Laps;
  while Fine>Debe do
begin
    Debe := gettickcount;
    Application.ProcessMessages
  end;
end;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Eigenschaften eines Objektes für ein paar Sekunden zuwei

  Alt 12. Mai 2008, 16:49
Es sollte eigentlich so funktionieren, obwohl in deinem Code Application.ProccessMessages etwas (zu) oft aufgerufen wird.
Man sollte lieber passiv warten:
http://www.delphipraxis.net/internal...ect.php?t=7355
Markus Kinzler
  Mit Zitat antworten Zitat
Delphiturbo
(Gast)

n/a Beiträge
 
#10

Re: Eigenschaften eines Objektes für ein paar Sekunden zuwei

  Alt 12. Mai 2008, 17:07
Vielen Dank mkinzler
Obwohl ich mein Problem mit einem Timer gelöst habe, habe ich
wieder den Timer weg geschmissen.
Ich habe den Delay (Passiv) getestet. Es funktioniert wunderbar und blockiert das Programm überhaupt nicht

gruß
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz