Strona 1 z 1
Zmienne C-GEO w kodzie formularza?
: 18 cze 2021, 13:09
autor: Aoschin
Witam!
Czy można jakoś wywołać zmienne C-Geo, te domyślne i te użytkownika w Kodzie formularza .fr3?
Chciałbym uzależnić treść obiektów od wartości $pPowiat.
Re: Zmienne C-GEO w kodzie formularza?
: 21 cze 2021, 08:57
autor: Asia T.
Witam,
wszystkie zmienne podane są w tym artykule:
http://xsoftline.geo.pl/wiki/index.php? ... edytor_v.2 , jest też opis, jak dodawać swoje zmienne.
Re: Zmienne C-GEO w kodzie formularza?
: 21 cze 2021, 09:19
autor: Aoschin
Tak, tak potrafię używać zmiennych
Pytam, czy można je wywołać w Kodzie
O tu
- Zrzut ekranu 2021-06-21 091855.jpg (106.11 KiB) Przejrzano 2672 razy
Re: Zmienne C-GEO w kodzie formularza?
: 21 cze 2021, 09:32
autor: grzes
Każdy obiekt formularza ma zdarzenia:
- memo.png (6.09 KiB) Przejrzano 2667 razy
W zdarzeniu można odnieść się do zawartości np. wyzerować wartość:
procedure Memo38OnAfterData(Sender: TfrxComponent);
begin
tfrxmemoview(sender).text := '';
end;
do zmiennych można sie chyba dobierać ich nazwą jaką ma w formularzu (właściwość Name) np memo3.text := 'ala ma kota';
Proszę opisać konkretną potrzebę to może cos więcej podpowiem
Re: Zmienne C-GEO w kodzie formularza?
: 21 cze 2021, 10:04
autor: Aoschin
No właśnie w ten sposób próbowałem, ale coś mi nie szło.
Mam pole (memoX) z zawartością [$ppowiat]
Chcę użyć
if memoX.Text = 'kaliski'
then
MemoY.Text := Starosta Kaliski
end;
if memoX.Text = 'Kalisz - miasto na prawach powiatu'
then
MemoY.Text := Prezydent Miasta Kalisza
end;
Próbowałem na pewno OnBeforePrint i OnAfterPrint (OnAfterData chyba też, ale to musiałbym sprawdzić jeszcze raz) i nie chciało działać.
Taki testowy strzał działa
if memoX.Text = '[$ppowiat]'
then
MemoY.Color := clRed
end;
więc to nie problem z kodem tylko z zawartością tego pola. Mam wrażenie, że te zmienne([$ppowiat]) są podmieniane na samym końcu po wykonaniu wszystkich zdarzeń z formularza, więc chciałem te "zwykłe" zmienne C-Geo wywołać bezpośrednio w kodzie zamiast zasysać je wtórnie z pól tekstowych.
Re: Zmienne C-GEO w kodzie formularza?
: 21 cze 2021, 14:06
autor: grzes
Pwinno zadziałac coś takieego
Kod: Zaznacz cały
procedure Memo3OnAfterData(Sender: TfrxComponent);
begin
if copy(memo3.text,1,5)='kalis' then memo4.text:='Starosta Kaliski';
end;
To copy() jest tam potrzebne bo na końcu tych pól czesto sa znaki Enter i proste sprawdzenie memo.text='abc' nie dziala
Re: Zmienne C-GEO w kodzie formularza?
: 21 cze 2021, 14:56
autor: Aoschin
Działa dla '[$pPo' ale niestety nie dla wartości zmiennej (czy "kaliski", czy "Kalisz - miasto ...")
Mam już coś na mniej więcej podobnej zasadzie w WZDE, ale tam dane są podczytywane we wstędze z bazy danych ZANIM wykonywane są poszczególne procedury i tam mi to pięknie działa.
Zamiast copy() używam trim(), bo mogę dokładnie podać zawartość pola tekstowego, nie ograniczając się ilością znaków.
Kod: Zaznacz cały
var
M1 : string;
fM1 : extended;
M2 : string;
fM2 : extended;
M3 : string;
fM3 : extended;
l0 : integer;
l1 : integer;
l2 : integer;
pp1 : integer;
ch1 : char;
begin
M1 := Suma_stara1.Text;
fM1 := StrToFloat(trim(M1));
M2 := Suma_nowa1.Text;
fM2 := StrToFloat(trim(M2));
fM3 := (((fM2*10000)-(fM1*10000))/10000);
M3 := FloatToStr(abs(fM3));
W kodzie wyżej pobiera już zwrócone wartości zmiennych(czyli 0.000X zamiast [pow_now], czy co to tam jest), odejmuje i zwraca wynik.
W zwykłych formularzach w kwestii zmiennych projektu C-GEO coś nie działa (obstawiam, że wartość [$pPowiat] jest podmieniana na "kaliski', "Kalisz - miasto...", "pleszewski" etc. gdzieś później i przez to kod nie ma czego zassać z obiektu tekstowego), dlatego chciałem je jakoś wywołać bezpośrednio wcześniej.
Re: Zmienne C-GEO w kodzie formularza?
: 21 cze 2021, 15:10
autor: grzes
Aoschin pisze: ↑21 cze 2021, 14:56
Działa dla '[$pPo' ale niestety nie dla wartości zmiennej (czy "kaliski", czy "Kalisz - miasto ...")
na pewno w zdarzeniu OnAfterData (zdarzenie dla tego konkretnie pola)?
Re: Zmienne C-GEO w kodzie formularza?
: 21 cze 2021, 15:35
autor: Aoschin
Cały kod:
Kod: Zaznacz cały
var
ButtonAns : integer;
procedure OrganOnAfterData(Sender: TfrxComponent);
begin
if copy(Powiat.text,1,5)='Kalis' then Organ.text:='TEST';
end;
begin
Szkic_orientacyjny.Top := Mapa.Height - Szkic_orientacyjny.Height;
Szkic_orientacyjny.Left := Mapa.Width - Szkic_orientacyjny.Width;
Wymiary.Text := FloatToStr(GM_MdCP_A3L.PaperHeight)+' x '+FloatToStr(GM_MdCP_A3L.PaperWidth);
ButtonAns := MessageDlg('Z pieczątkami?',mtConfirmation,mbYes+mbNo,0);
if ButtonAns = 7
then
begin
Rich1.Visible := False;
Rich1.Printable := False;
Rich3.Visible := False;
Rich3.Printable := False;
Rich4.Visible := False;
Rich4.Printable := False;
end;
if ButtonAns = 6
then
begin
Rich1.Visible := True;
Rich1.Printable := True;
Rich3.Visible := True;
Rich3.Printable := True;
Rich4.Visible := True;
Rich4.Printable := True;
end;
end.
- Zrzut ekranu 2021-06-21 153238.jpg (13.64 KiB) Przejrzano 2604 razy
- Zrzut ekranu 2021-06-21 153214.jpg (113.55 KiB) Przejrzano 2604 razy
W tym momencie to
Starosta Kaliski jest tam wpisane, ale powinno zastąpić na
TEST gdyby zadziałało
Re: Zmienne C-GEO w kodzie formularza?
: 21 cze 2021, 15:42
autor: Aoschin
Okay, chyba jednak nie dla tego pola...
Dopiero jak wrzucilem to tutaj to coś zatrybiło.
Sprawdzę wieczorem.
Re: Zmienne C-GEO w kodzie formularza?
: 21 cze 2021, 17:09
autor: Aoschin
Oczywiście działa. Dziękuję za pomoc!