| Autor |
Beitrag |
DnC
      
Beiträge: 98
XP
Delphi 3,6,7,2005 PE
|
Verfasst: Mi 07.03.07 17:10
Gleich vorneweg, damit nichts unklar ist: ich wollte mal probieren, Schnee zu zeichnen und das ohne Formular zu machen...
also hab ich ein ganz normales Projekt gemacht, hab mir das Ganze zusammengeschrieben (mehr oder minder gut)
Wenn ich aber auf den Bildschirm zeichne, ist das vom vorherigen Schritt noch drauf (oh Wunder!  )... also hab ich den Bildschirm mit :
ReDrawWindow(0,nil,0,RDW_INVALIDATE or RDW_ERASENOW or RDW_ALLCHILDREN);
neu gezeichnet...
Das funktioniert auch (einigermaßen), aber zu langsam... Deshalb wollte ich mir beim Starten den Bildschirm holen und vor dem Malen erstmal alles damit übermalen.
Als ich dann ein Bitmap erzeugen wollte, kam das:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| uses SysUtils, Forms, Graphics, Windows, Types, Dialogs;
var rmb:TBitmap;
begin
rmb:=TBitmap.Create;
end. |
[Error] Schnee.dpr(23): Object or class type required
was mit leider völlig schleierhaft ist, denn ich hab Graphics als Unit ja eingebunden...
Ich denk mal, ich hab irgendeinen extrem dummen Fehler gemacht, aber... kein Plan
Des weiteren: kann ich ReDrawWindow effektiver nutzen?
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mi 07.03.07 17:15
Ist ein bekanntes Problem, da die VCL und die Header vom Betriebssystem beide teilweise gleiche Typen implementieren. Faustregel: Die Reihenfolge der Uses sollte immer folgende sein: Delphi-Quelltext 1:
| Windows, Messages, SysUtils, Classes, Graphics, Controls, ... | Im Prinzip also genau so, wie es Dir Delphi auch schreibt, wenn Du ein neues Formular anlegst. P.S.: Vertauscht man Windows.pas und Graphics.pas erhält der Typ Windows.TBitmap eine höhere Priorität als Graphics.TBitmap. Da Windows.TBitmap aber ein Record ist, und das Feld Create nicht besitzt, führt dies zu einem Fehler ... Der Typ mit der höchsten Priorität steht immer zuletzt in der Uses ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
DnC 
      
Beiträge: 98
XP
Delphi 3,6,7,2005 PE
|
Verfasst: Mi 07.03.07 17:21
aaaah! genial. Danke!
obwohl die Reihenfolge irgendwie komisch ist, das wichtige zuletzt...
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mi 07.03.07 17:26
DnC hat folgendes geschrieben: | aaaah! genial. Danke!
obwohl die Reihenfolge irgendwie komisch ist, das wichtige zuletzt... |
Das kommt auf Grund der Behandlung der Gültigkeitsbereiche zustande ...
Jede Unit, die Du einbindest, erzeugt EINEN eigenen Gültigkeitsbereich, in dem weitere Dinge eingebunden werden. Dieser Gültigkeitsbereichsstapel wird nun von innen nach außen durchsucht ... Daher trifft man zuerst auf die Bezeichner, die in den Units definiert werden, die zuletzt eingebunden werden ... Dieses Verhalten KANN man übergehen, indem man den Unit-Namen exakt angibt, für die Unit, aus der ein Bezeichner referenziert wird ... Eben wie in meiner Erklärng gezeigt mit Graphics.TBitmap.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
|