Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Drucker ComboBox (https://www.delphipraxis.net/155928-drucker-combobox.html)

Eppos 13. Nov 2010 15:40

Drucker ComboBox
 
Hallo zusammen,

ich habe mir eine Komponente geschrieben, die in einer ComboBox alle Drucker auflistet.
Ich fülle die Komponente wie folgt:
Delphi-Quellcode:
procedure TPrinterComboBox.LoadPrinters;
var x : Integer;
begin
  Self.Items.Clear;
  Self.Items.Add( 'Standard Drucker' );
  for x := 0 to printers.printer.Printers.Count -1 do
    Self.Items.Add( printers.Printer.Printers.Strings[ x ] );
end;
Wenn ich diese Komponente verwende dann erscheinen auf meinem Rechner die korrekten Drucker.
Wenn ich aber das Programm auf meinem anderen PC installiere, dann erscheinen die gleichen Drucker
wie auf meinem PC. Was mach ich falsch?

Vielen Dank.

Eppos

stahli 13. Nov 2010 16:03

AW: Drucker ComboBox
 
Wird denn die Methode wirklich aufgerufen?
Falls das nicht der Fall ist, werden vielleicht "Standarditems" angezeigt?

PS: Self und die Unit printers musst Du nicht unbedingt explizit angeben.

Eppos 13. Nov 2010 16:09

AW: Drucker ComboBox
 
Ich gehe davon das sie aufgerufen wird,
haben Sie so drin:

Delphi-Quellcode:
constructor TPrinterComboBox.Create(AOwner: TComponent);
begin
  inherited;
  fOfficeHint := TAdvHintInfo.Create;
  LoadPrinters;
end;

SirThornberry 13. Nov 2010 17:03

AW: Drucker ComboBox
 
Sind auf dem anderen Rechner vielleicht die gleichen Drucker installiert? Wenn die Rechner in keiner Weise miteinander vernetzt sind werden dir entweder standarditems angezeigt oder du hast die Daten vielleicht in einer Textdagei gespeichert und liest diese immer nur aus.

Bummi 13. Nov 2010 17:12

AW: Drucker ComboBox
 
Ich denke im Konstruktor zu suchen ist zu früh, danach werden ja noch die Stored Values geladen.
Da geb es IMHO ein Ereignis wie Loaded, mal suche ob ich es finde....

EDIT

Procedure Loaded;override;

SirThornberry 13. Nov 2010 17:19

AW: Drucker ComboBox
 
aber ist Loaded nicht dafür da um zu signalisieren das alle Properties geladen wurden? Die Items ändern sich zwischen Constructor und dem Ende von Loaded eigentlich nur wenn sie im Objektinspektor überschrieben wurden und wenn dem so ist sollte man das akzeptieren und die explizit veränderten Items nicht zurück ändern.
Ich denke Loaded ist hier ganz klar die falsche Stelle um die Items zu setzen.

Bummi 13. Nov 2010 17:30

AW: Drucker ComboBox
 
@SirThornberry

Da der Konstruktor ja schon zur Designzeit aufgerufen wird, gehe ich davon aus daß die hier erstellten Einträge auch beim Speichern im DFM abgelegt werden (ein einfacher Blick ins DFM würde genügen).
In dem hier vorgesehenen Anwendungfall sollten eher die Items ausgeblendet werden.:-D
http://www.delphipraxis.net/155916-[trickkiste-komponentenentwickl]-sauberes-verbergen-von-properties-im-objectinspector.html#post1061299

Eppos 13. Nov 2010 18:19

AW: Drucker ComboBox
 
wie soll ich sagen, es geht :-)

Danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:11 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