Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];

Вниз

Помогите программеры!!!!!!!   Найти похожие ветки 

 
draculenok   (2002-02-18 13:29) [0]

Здравствуйте программеры!!!!
итак объясняю ситуацию мне необходимо сделать COMBOBOX который должен брать список из базы но без повторений.... но при этом чтобы я мог сам вручную вводить данные....
наподобие в експлорере куда инетовский адрес пишешь ... что то такое
очень надо помогите пожалуйста
заранее благодарен!!!!


--------------------------------------------------------------------------------


 
Digitman   (2002-02-18 14:27) [1]

подразумевается, что с DISTINCT-запросом к базе у тебя проблем нет ?


 
Сергей Иванов   (2002-02-18 16:21) [2]

Кроме того, в самом ComboBox можно запретить дублирование.
И как же ты хочешь сохранять в базу - хранимой процедурой, простым Post, UpdateQuery. Т.е. хотелось бы знать, каким образом ты работаешь с базой - локально, клиентом, трехзвенкой.


 
draculenok   (2002-02-19 06:58) [3]

я работаю просто локальной базе.... проблем нет мне главно сделать так чтобы можно было самому вводить в окно необходимый текст или выбирать его из списка....
а запрос без повторений я уже нашел


 
skiph   (2002-02-19 07:35) [4]

Для инициализации значений ComboBox используй процедуру вроде:
procedure ComboRefresh;
Var i:byte;
begin
With Form1.Query1 do
begin
Form1.ComboBox1.Items.Clear;
First;
while not Eof do
begin
Form1.ComboBox1.Items.Add(FieldByName("Field1").AsString));
Next;
end;
end;
end;

Только не забывай вызывать процедуру когда надо.


 
draculenok   (2002-02-19 07:47) [5]

>skiph © это на заполнение а на счет самого comboboxa нет идей?


 
Сергей Иванов   (2002-02-19 14:21) [6]

Ну тогда будем считать, что комбо ты уже заполнил.
Далее - добавление новых / выбор значений из айтемов.
Основная идея - то что у комбо можно менять стиль - например csSimple или csDropDown. Приведу пример, как это делал я.
Навешиваешь на комбо события:OnKeyDown

procedure TGroup.ItemsComboKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case key of
VK_RETURN : begin
if ItemsCombo.Style = csSimple then begin
ItemsCombo.Items.Add(ItemsCombo.Text);
Items.ItemsCombo.Items.Add(ItemsCombo.Text);
{это добавление
в базу} Items.WriteToTable(ItemsCombo.Text, "КГ");
end; {csSimple}
ItemsCombo.Style := csDropDown;
ItemsCombo.Visible := false; {скрываем его}
end;
VK_ESCAPE : begin
if ItemsCombo.Style<>csDropDown then begin
ItemsCombo.Style := csDropDown;
ItemsCombo.Text := "";
end;
ItemsCombo.Visible := false; {скрываем его}
end;
end;
end;

Навешиваешь на комбо события:OnKeyPress
Это немногомодифицированная процедура из хелпа

procedure ComboKeyPress(Sender: TObject; var Key: Char);
var
Found: boolean;
i, SelSt: Integer;
TmpStr, NewItem: string;
Rect :TRect;
Edit :TEdit;
begin
if key in ["а".."я"] then Dec(Key,32);
with (Sender as TComboBox) do begin
SelSt := SelStart;
if (Key = Chr(vk_Back)) and (SelLength <> 0) then
TmpStr := Copy(Text,1,SelStart)+Copy(Text,SelLength+SelStart+1,255)

else if Key = Chr(vk_Back) then {SelLength = 0}
TmpStr := Copy(Text,1,SelStart-1)+Copy(Text,SelStart+1,255)
else {Key in ["A".."Z", etc]}
TmpStr := Copy(Text,1,SelStart)+Key+Copy(Text,SelLength+SelStart+1,255);
if TmpStr = "" then Exit;

if (Key = Chr(vk_Back)) and (SelSt > 0) then Dec(SelSt)

else if Key <> Chr(vk_Back) then Inc(SelSt);
Key := #0; { indicate that key was handled }
if SelSt = 0 then
begin
Text:= "";
Exit;
end;

Found := False;
for i := 1 to Items.Count do
if Copy(Items[i-1],1,Length(TmpStr)) = TmpStr then
begin
Text := Items[i-1]; { update to the match that was found }
ItemIndex := i-1;
Found := True;
Break;
end;
if Found then { select the untyped end of the string }
begin
SelStart := SelSt;
SelLength := Length(Text)-SelSt;
end
else begin
Style := csSimple;
Text := TmpStr;
SelStart := SelSt;
end;
end;
end;


 
Сергей Иванов   (2002-02-19 14:24) [7]

В этом месте
...
{это добавление
в базу} Items.WriteToTable(ItemsCombo.Text, "КГ");
...
дописываешь чего-нибудь вроде
Table1.Append;
Table1.FieldByName("Name") := ItemsCombo.Text;
...
Table1.Post;

Справишься?


 
draculenok   (2002-02-19 14:32) [8]

Постараюсь...
почему при вводе код на событие onkeydown он пишет что
Itemscombo не правильно


 
MetallAdm   (2002-02-19 14:37) [9]

Я тебе в другом вопросе ответил но
повторяю !
q0.Open;
q0.First;
While (not Q0.Eof) do
begin
s1:=Q0.FieldByName("dnach").AsString;
s2:=Q0.FieldByName("dkon").AsString;
Q0.Next;
stt:=s1+" - "+s2;
Cb1.Items.Add(stt);
end;

думаю понятно !
воот ! просто ихорошо


 
Сергей Иванов   (2002-02-19 14:51) [10]

Это у меня в программе TComboBox имеет имя ItemsCombo;
а у тебя в программе оно будет называться так, как ты его назовешь.
Сам то не догадался?


 
draculenok   (2002-02-19 14:52) [11]

Сергей Иванов >>> все понял .... спасибо


 
draculenok   (2002-02-19 15:08) [12]

спасибо всем за помощь!!!!!!!!!!!!!!!

извините если что не так спрашивал...


 
Сергей Иванов   (2002-02-19 15:24) [13]

Не за что ;)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.005 c
3-57276
Макз
2002-02-17 15:20
2002.03.18
Вычисляемое поле с параметром


1-57444
lipskiy
2002-03-04 00:52
2002.03.18
Подкомпилированные ресурсы занимают место в памяти?


3-57273
Gromozeka
2002-02-15 07:13
2002.03.18
FormCreate


3-57291
Siberia
2002-02-01 18:54
2002.03.18
Что влияет на размер дистрибутива, созданного Install Shield Express?


1-57352
xpyctuk
2002-03-04 15:22
2002.03.18
ISAPI приложение - WebModule, Свойства Request and Response





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский