home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / delite / paletti / paletti.hlp < prev    next >
Encoding:
INI File  |  1992-04-01  |  2.0 KB  |  65 lines

  1. [Und was lernen wir hier?]
  2. Dieses überaus lehrreiche Beispiel zeigt, wie
  3. man komplexe Dialoge unter deLite realisiert.
  4. Und wer einen nicht ganz farbechten Monitor
  5. hat, kann diesem Beispiel zudem noch einen
  6. ganz praktischen Nutzen abgewinnen.
  7. Voraussetzung ist allerdings, daß Sie eine
  8. VGA-Karte ihr eigen nennen.
  9.  
  10. [OOPS!]
  11. Richtig! Zur Realisierung der bunten Schalter-
  12. leiste für die Farbauswahl wurde durch Verer-
  13. bung und Ableitung das neue Dialogelement
  14. "ColorUserRadioButton" erzeugt. Es unterschei-
  15. det sich vom UserRadioButton durch die zusätz-
  16. lich wählbare Farbe. Geändert wurde im Wesent-
  17. lichen die Draw-Methode.
  18.  
  19. [Der Event-Handler]
  20. Dieses im deLite-Handbuch etwas stiefmütterlich
  21. behandelte Thema kann anhand dieses Beispiels
  22. vertieft werden. Der Event-Handler des Paletten-
  23. Dialoges muß auf Bewegungen der Slider und 
  24. Auswahlen der Radio-Buttons reagieren. 
  25.  
  26. [Die Hausaufgabe]
  27. Aufmerksame Leser des Quelltextes werden es
  28. bemerkt haben: Zur Anzeige der ausgewählten
  29. Farbe wird einfach ein BAR-Befehl verwendet.
  30. Nachteil: Der Befehl muß sowohl im Event-
  31. Handler als auch unmittelbar nach dem Show-
  32. Aufruf verwendet werden. Besser wäre es,
  33. hierfür ein Dialogelement "ColorBar" zu
  34. verwenden.
  35.  
  36. [Jetzt sind Sie dran!]
  37. Versuchen Sie es! Ein Tip: So lautet die Dekla-
  38. ration
  39.  
  40.   TYPE ColorBar = object(DlgItem)
  41.          constructor Init(x,y,dx,dy: integer);
  42.          procedure   Draw; virtual;
  43.          procedure   SetColor(c: byte);
  44.          procedure   GetColor(c: byte);
  45.          destructor  Done; virtual;
  46.         private
  47.          color    : byte; 
  48.        end;
  49.        
  50. [Noch ein Tip]
  51. Damit Ihr neues Objekt nicht fokussiert wird
  52. und auch nicht in die Verlegenheit kommt,
  53. selbst Ereignisse verarbeiten zu müssen, 
  54. sollten Sie im Konstruktor die Statusflags
  55. sfBlind und sfNoFocus setzen.
  56.  
  57.    constructor Init;
  58.    begin
  59.      DlgItem.Init(x,y);
  60.      Area.Assign(x,y,x+dy,y+dy);
  61.      Status := Status or (sfBlind + sfNofocus);
  62.    end;  
  63.      
  64.  
  65.