AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Mehrere Icons nebeneinander darstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere Icons nebeneinander darstellen

Ein Thema von schwa226 · begonnen am 10. Jul 2009 · letzter Beitrag vom 3. Aug 2009
 
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#11

Re: Mehrere Icons nebeneinander darstellen

  Alt 11. Jul 2009, 21:26
Man könnte ja auch so:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

type
  TIconBar = class(TGraphicControl)
  private
    FIconSize: integer;
    FIconSpace: integer;
    FClickedIndex: integer;
    FIconArray: Array of HIcon;
    procedure Sort;
    procedure SetIconSpacer(Value: integer);
  public
    constructor Create(Owner: TComponent); override;
    destructor Destroy; override;
    procedure Paint; override;
    procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
    procedure AddIcon(Icon: HIcon);
    procedure DeleteIcon(Index: integer);
    property IconSize: integer read FIconSize;
    property ClickedIndex: integer read FClickedIndex;
    property IconSpacer: integer read FIconSpace write SetIconSpacer;
  end;

var
  Form1: TForm1;
  IconBar: TIconBar;

implementation

{$R *.dfm}

constructor TIconBar.Create;
begin
  inherited Create(Owner);

  FIconSize := 32;
  FIconSpace := 5;

  Width := FIconSize;
  Height := FIconSize;
end;

destructor TIconBar.Destroy;
var i: integer;
begin
  for i := 0 to length(FIconArray)-1 do
    DeleteObject(FIconArray[i]);
  SetLength(FIconArray, 0);

  inherited Destroy;
end;

procedure TIconBar.Sort;
var i,j,help, entrys: cardinal;
begin
  Entrys := length(FIconArray)-1;
  if Entrys > 0 then
  begin
    for i := 0 to Entrys - 1 do
      for j := i + 1 to Entrys do
        if FIconArray[i] < FIconArray[j] then
        begin
          help := FIconArray[i];
          FIconArray[i] := FIconArray[j];
          FIconArray[j] := help;
        end;
  end;
end;

procedure TIconBar.SetIconSpacer(Value: integer);
begin
  FIconSpace := Value;
end;

procedure TIconBar.Paint;
var i: integer;
begin
  Canvas.Brush.Color := Color;
  Canvas.Brush.Style := bsSolid;
  Canvas.FillRect(ClientRect);

  for i := 0 to length(FIconArray)-1 do
    DrawIconEx(Canvas.Handle, i * (FIconSize + FIconSpace), 0, FIconArray[i], FIconSize, FIconSize, 0, 0, DI_NORMAL);
end;

procedure TIconBar.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin

end;

procedure TIconBar.AddIcon;
begin
  Width := length(FIconArray) * (FIconSize + FIconSpace) + FIconSize;
  SetLength(FIconArray, length(FIconArray) + 1);
  FIconArray[length(FIconArray)-1] := Icon;
  Invalidate;
end;

procedure TIconBar.DeleteIcon;
begin
  // todo:

  if (index >= 0) and (index < length(FIconArray)) then
  begin
    DeleteObject(FIconArray[index]);
    FIconArray[index] := 0;

    // (Re) Sort ... die Lücke muss nach oben
    Sort;

    // Löschen des Null-Eintrags
    SetLength(FIconArray, length(FIconArray));

    Width := length(FIconArray) * (FIconSize + FIconSpace) - FIconSpace;
    Invalidate;
  end;
end;

// -------------------------------------------------------------------------//

procedure TForm1.FormCreate(Sender: TObject);
begin
  IconBar := TIconBar.Create(Self);
  IconBar.Top := 40;
  IconBar.Left := 40;
  IconBar.Parent := Self;
  IconBar.AddIcon( LoadIcon(0, IDI_APPLICATION) );
  IconBar.AddIcon( LoadIcon(0, IDI_ASTERISK) );
  IconBar.AddIcon( LoadIcon(0, IDI_EXCLAMATION) );
  IconBar.AddIcon( LoadIcon(0, IDI_HAND) );
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  IconBar.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  IconBar.DeleteIcon(1);
end;
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
 


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 06:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz