DBGRID zmiana danych podczas ich wpisywania

0

Witam
mam takie proste pytanie... (proste do wytlumaczenia)
otoz do grida pobieram dane przez jakis select....
teraz czy moge manipulowac danymi wpisywanymi do grida w ktoryms z eventsow?
chodzi o to ze... z bazy idzie do komorki wartosc "0123456789" a ja bym chcial zeby do komorki wpisalo sie "0-1234-56-78-9"

da sie cos takiego zrobic?

Pozdrawiam

0
york_daro napisał(a)

Witam
mam takie proste pytanie... (proste do wytlumaczenia)
otoz do grida pobieram dane przez jakis select....
teraz czy moge manipulowac danymi wpisywanymi do grida w ktoryms z eventsow?
chodzi o to ze... z bazy idzie do komorki wartosc "0123456789" a ja bym chcial zeby do komorki wpisalo sie "0-1234-56-78-9"

da sie cos takiego zrobic?

Pozdrawiam

Ależ oczywiście, albo robisz pole kalkulowane i wstawiasz kreski do wartości z pola w którym jest "0123 ..." , albo wykorzystujesz OnGetText, OnSetText + F1.

0

Jesli np. wprowadzasz dane do bazy z Edit'ów to możesz dac na formę jeden MaskEdit z którego będzie leciał sformatowany tekst odpowiednią maską. Daj w Oncreate formy taki kod, po uprzednim umieszczeniu Maskedita na forme:

MaskEdit1.EditMask:='#-####-##-##-#';

i już.

0

baza jest pobierana z innego programu i niestety nie moge z tym nic zrobic...
moge zmienic jedynie przy wstawianiu

ongettext i onsettext nie ma w DBGrid...

0

No to w komponencie np. IBQuery czy innym od bazy w danej kolumnie ustawiasz sobie maskę (właściwość EditMask).

0

tak ale ja korzystam z jednego ibquery do wielu zapytan a maske chce do okreslonego zapytania... no i nie widze tam editmask

0

tak ale ja korzystam z jednego ibquery do wielu zapytan a maske chce do okreslonego zapytania... no i nie widze tam editmask

Prawym na IBQuery potem:

  • Fields editor
  • potem znów prawym myszki na te białe puste okienko
  • Add all fields
  • wskaż którą tam chcesz kolumnę formatować
  • i we właściwościach znajdź Editmask i wpisz #-####-##-##-#
0

to zadziala tylko jezeli w design-time ustalilem zapytanie SQL dla IBQUERY.. ale ja je ustalam DYNAMICZNIE, temu wybierajac "Add all Fields" nie doda mi nic i nie bede mogl ustawic editmask... ja to probowalem tak:

with Form2.IBQuery1, SQL do
begin
  Close;
  Clear;
  Add('select WY_INDW as "Indeks artykułu", WY_NAZWA1 as "Nazwa", WY_NAZWA2 as "Nazwa2" from GT_KWYR');
  Open;
end;
form2.IBQuery1.Fields[0].EditMask := '#-####-##-##-#';

ale to nie dziala...
a chce zeby indeks artykulu wlasnie byl tak wyswietlany...

0

Zawsze możesz sobie to zrobić na drugim IBQuery a IBQuery1 na którym robisz operacje, zostawić w spokoju. Czyli robisz.

form2.IBQuery2.Fields[0].EditMask := '#-####-##-##-#';

A maskowanie to rób przed selectem.
U mnie tam działa.

0

a inny sposob?
wiem ze ondrawcolumncell mozna np: zmienic kolor komorki.. a nie da sie tam operowac wpisana wartoscia?

0
york_daro napisał(a)

a inny sposob?
wiem ze ondrawcolumncell mozna np: zmienic kolor komorki.. a nie da sie tam operowac wpisana wartoscia?

Jeśli chcesz to robić w jednym gridzie, to ondrawcolumncell bedzie ok. Schemat jest prosty, najpierw malujesz prostakat (tlo) a potem przetworzony tekst (FillRect, TextOut ...) Wykorzystaj parametry przekazane do zdarzenia (Rect ...)

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