Digamos que quiero hacer el combobox como los de las paginas web. en mi BD de paises se muestra asi:
IdPais nombre
803 Mexico
804 Holanda
Este es un ejemplo que se me ocurrio. pero con varios otros conceptos ocupo buscarlo por el ID y no por el consecutivo del combo. Por decir en la tabla de arriba mis ID's comienzan con 800 y no con 0 y se puede brincar del 804 al 820. Pero como mejor ejemplo quiero el combo como el tipo web.
<select name= "cbpais".... value="803">Mexico</select>
y en web cuando hago un $_REQUEST['cbpais'] me devuelve el 803 y no el 1 o el 0.
Igual abajo pongo el codigo, por si encuentran algun error. Lo que hago es que voy creando un arreglo aparte para consultar el valor de los ID's
Código Delphi
[-]
unit ComboBoxValue;
interface
uses
SysUtils, Classes, Controls, StdCtrls;
type
TComboBoxValue = class(TComboBox)
private
valores: array of string;
protected
function GetValueIndex:string;
procedure SetValueIndex(valor:string);
public
procedure Add(S, V:string);
property ValueIndex :string read GetValueIndex write SetValueIndex;
published
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TComboBoxValue]);
end;
procedure TComboBoxValue.Add(S, V: string);
begin
SetLength(valores, ItemCount);
AddItem(S, self);
SetLength(valores, ItemCount);
valores[ItemCount-1] := V;
end;
procedure TComboBoxValue.SetValueIndex(valor:string);
var i:integer;
begin
for I := 0 to ItemCount - 1 do
begin
if valores[i] = valor then
ItemIndex := i;
end;
Changed;
end;
function TComboBoxValue.GetValueIndex:string;
begin
if ItemCount > 0 then
result := valores[ItemIndex]
else
result := 'null';
end;
End.