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 :P
Pytam, czy można je wywołać w Kodzie

O tu
Zrzut ekranu 2021-06-21 091855.jpg
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
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
Zrzut ekranu 2021-06-21 153238.jpg (13.64 KiB) Przejrzano 2604 razy
Zrzut ekranu 2021-06-21 153214.jpg
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! :)