AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Combobox mit tag

Ein Thema von StTüff · begonnen am 30. Aug 2006 · letzter Beitrag vom 31. Aug 2006
Antwort Antwort
StTüff

Registriert seit: 3. Dez 2002
132 Beiträge
 
Delphi 2006 Enterprise
 
#1

Re: Combobox mit tag

  Alt 31. Aug 2006, 08:33
Was meint Ihr dazu:

Delphi-Quellcode:
unit TaggedCoBo;

interface

uses
  Windows, Messages, SysUtils, Consts, Classes, Controls, StdCtrls;

type
  TTaggedComboBox = class(TComboBox)
  private
    { Private declarations }
  protected
    { Protected declarations }
    function GetItemsClass: TCustomComboBoxStringsClass; override;
  public
    { Public declarations }
  published
    { Published declarations }
  end;

  TTaggedComboBoxStrings = class (TCustomComboBoxStrings)
  public
    function Addnew(const S: string; tag: integer): Integer;
    //Insert ist noch nicht berücksichtigt....
    procedure Insert(Index: Integer; const S: string); override;
    function GetTag (idx: integer): integer;
  private
    TagArray: array of integer;
    function Add(const S: string): Integer; override;
  end;


procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('MyComponents', [TTaggedComboBox]);
end;

function TTaggedComboBox.GetItemsClass: TCustomComboBoxStringsClass;
begin
  //Hier die Modifizierte Stringklasse zurückgeben
  Result := TTaggedComboBoxStrings;
  //inherited;
end;

function TTaggedComboBoxStrings.Addnew(const S: string; tag: integer): Integer;
begin
  //Den Tag verwalten
  //String in das Array an der letzten Position einfügen
  SetLength(TagArray, high(TagArray)+1);
  TagArray[high(TagArray)];
  //Das eigentliche Add aufrufen
  Result:=Add(S);
end;

function TTaggedComboBoxStrings.GetTag (idx: integer): integer;
begin
  if idx <= high(TagArray) then
    Result:=TagArray[idx];
end;

function TTaggedComboBoxStrings.Add(const S: string): Integer;
begin
  Result := SendMessage(ComboBox.Handle, CB_ADDSTRING, 0, Longint(PChar(S)));
  if Result < 0 then
    raise EOutOfResources.Create(SInsertLineError);
end;

procedure TTaggedComboBoxStrings.Insert(Index: Integer; const S: string);
begin
  if SendMessage(ComboBox.Handle, CB_INSERTSTRING, Index,
    Longint(PChar(S))) < 0 then
    raise EOutOfResources.Create(SInsertLineError);
end;

end.
Mal abgesehen davon, dass "Insert" noch nicht berücksichtigt ist, könnte es doch in der Art gehen, oder?
(Ist noch nicht getestet...)

Gruß,

StTüff
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:54 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