Jakiego komponentu użyć do listy kontaktów, takiej jak w komunikatorze?

Odpowiedz Nowy wątek
2014-04-14 09:53

Rejestracja: 13 lat temu

Ostatnio: 4 minuty temu

0

Witajcie,

nieśmiało podchodzę do napisania mini crm-a współpracującego z centralą telefoniczną. Pomyślałem sobie że ładnie wyglądałaby taka aplikacja gdyby była podobna do komunikatora. Na liście kontaktów pojawiałyby się aktualnie aktywne połączenia telefoniczne a operatorzy wybieraliby rozmówce jak wybiera się kontakt w komunikatorach internetowych. Poza tym w trakcie rozmowy otwarta karta użytkownika pozwoliłaby na wprowadzenie notatki z rozmowy.

No i teraz pytanie: jak zrobić taką listę? Myślałem o jakiejś odmianie dbgrida, mam jednak problem z ładnym dynamicznym odświeżaniem takiego komponentu no chyba że macie na to jakiś ekstra sposób aby nowe rekordy w bazie danych "płynnie" się dopisywały do grida a już nieaktywne znikały?
Myślałem też o zwykłej liście, tutaj mam większe możliwości odświeżania danych ale znowu obsługa jest mniej wygodna że tak powiem.

Dlatego pytam czy wiecie może jak to robią autorzy komunikatorów?

Pozdrawiam
Robert

Pozostało 580 znaków

2014-04-14 10:09

Rejestracja: 7 lat temu

Ostatnio: 3 godziny temu

VirtualStringTree albo ListBox np. No i niestety bez programowania się nie obejdzie.


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2014-04-14 13:53

Rejestracja: 14 lat temu

Ostatnio: 2 minuty temu

0

Albo jak wyżej albo TFrame + ScrollBox.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-04-14 14:06

Rejestracja: 13 lat temu

Ostatnio: 4 minuty temu

0

Dzięki za sugestie. Muszę sprawę przemyśleć mocno.

Pozostało 580 znaków

2014-04-14 14:15
Moderator Delphi/Pascal

Rejestracja: 8 lat temu

Ostatnio: 53 sekundy temu

Lokalizacja: Tuchów

1

Dokładnie - bez programowania nie ma programowania;

Jeśli bardzo byś chciał mieć listę kontaktów ze swoim własnym wyglądem, to polecam prostego TListBox z oprogramowanym zdarzeniem OnDrawItem; Najlepiej by było stworzyć nowy komponent, bazując na podstawowej klasie, do którego zaimplementujesz "wewnętrznie" obsługę struktury kontaktów, gdzie jeden kontakt będzie posiadał kilka informacji, prócz wyświetlanej nazwy; Rysowanie itemów także będzie można wykonać pomiędzy przechwyceniem odpowiednich komunikatów, a wywołaniem ustawionego już w programie zdarzenia; W sumie to zdarzenia OnDrawItem nie musiałbyś w ogóle oprogramowywać w programie, bo komponent mógłby mieć to już zrobione w sobie;

Polecam więc zapoznać się z klasą TListBox i poczytać na temat tworzenia własnych komponentów; To nic innego, jak programowanie obiektowe, więc nie powinieneś mieć z tym problemów, o ile OOP faktycznie znasz, choćby w minimalnym stopniu (podstawy);

Na zwykłym TListBox można zdziałać cuda - wystarczy jedynie przechować w nim odpowiednie dane dla itemów oraz skorzystać z własnego zdarzenia ich rysowania;

Kiedyś przedstawiałem takie cudo, tyle że nie dla listy kontaktów, a dla listy wpisów z ich datami - całość na komponencie TCheckListBox, zrzut w załączniku.


Z TFrame to właściwie masz programowanie bez programowania. - _13th_Dragon 2014-04-14 15:59
Swój post pisałem dość długo, a zacząłem jak jeszcze Twojego nie było ;) - furious programming 2014-04-14 16:02

Pozostało 580 znaków

2014-04-14 16:01

Rejestracja: 17 lat temu

Ostatnio: 5 lat temu

1

Tak jak już napisał @abrakadaber, użył bym VirtualStringTree, to bardzo rozbudowany ListBox i też można zdziałać cuda.

edytowany 3x, ostatnio: Młody, 2014-04-14 16:02
Zastanawiam się czy można nazwać czołg bardzo zaawansowanym pistoletem ... - _13th_Dragon 2014-04-14 16:12

Pozostało 580 znaków

2014-04-14 17:23

Rejestracja: 13 lat temu

Ostatnio: 4 minuty temu

0

rzeczywiście komponent ma duże możliwości co nie zwalnia z programowania. Tego akurat się nie boję i nie wymagam komponentów które za mnie wszystko zrobią. W każdym bądź razie komponent ląduje już w moim Delphi, na pewno się przyda chociaż chyba nie w tym projekcie. Już wybrałem trochę inną drogę. Użyje jednak dbgrida z odświeżaniem niewidocznym dla użytkownika a na serwerze będę pobierał stan centrali telefonicznej i wpisywał do bazy. Rekordy te przydadzą mi się jako historia kontaktów.

Dzięki za podpowiedzi.

Jeśli uważasz wątek za zakończony - zaznacz fajeczkę przy którymś poście (plusiki już rozdałeś); Pamiętaj o tym w przyszłości, że w ten sposób "zamyka się" wątki; - furious programming 2014-04-14 23:28
Pomógł sam sobie :D - marogo 2014-04-15 11:34
Zdaża się i tak... :D - furious programming 2014-04-15 15:25
Ale za to jaki fajny komponent do listy poznałem :) - robertz68 2014-04-15 19:35

Pozostało 580 znaków

2014-04-16 09:48

Rejestracja: 17 lat temu

Ostatnio: 1 dzień temu

0

Kiedyś pisałem komunikator i znalazłem bardzo fajny komponent, który właściwie nie wymaga programowania, bo ma wszystko w sobie: TUsersListBox. Tylko, jeśli nie był rozwijany przez te lata, musisz pamiętać, że po każdym dodaniu/modyfikacji/usunięciu elementu, mówisz mu wywołać refresh albo invalidate.

http://www.vclcomponents.com/[...]Boxes/TUsersListBox-info.html - nie widzę daty ostatniej modyfikacji, ale można sprawdzić czy to ten, o którym piszesz; Najwyższa znaleziona w Google wersja komponentu to 2.8 (pod linkiem wersja 2.5); - furious programming 2014-04-16 14:00

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0