Hola.
Más o menos podría ser así:
Código Delphi
[-]procedure XX.Facturas(DataSet: TDataSet);
var
cText: string;
begin
factura.close;
facturas.sql.text := 'Select max(numero) as cUltimo from facturas';
facturas.open;
cText := IntToStr(facturas.FieldByName(cUltimo).AsInteger + 1);
CodFactura := Copy('000000', 1, 6 - Length(cText)) + cText;
facturas.close;
end;