Zmienne C-GEO w kodzie formularza?

Pytania dotyczące obsługi programu C-Geo V8 i kolejnych edycji
Aoschin
____
____
Posty: 142
Rejestracja: wtorek, 27 sierpnia 2019, 12:35

Zmienne C-GEO w kodzie formularza?

Post 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.
Pozdrawiam
Ao
Asia T.
Team
Team
Posty: 593
Rejestracja: wtorek, 10 marca 2015, 20:49

Re: Zmienne C-GEO w kodzie formularza?

Post 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.
Aoschin
____
____
Posty: 142
Rejestracja: wtorek, 27 sierpnia 2019, 12:35

Re: Zmienne C-GEO w kodzie formularza?

Post 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 613 razy
Pozdrawiam
Ao
Awatar użytkownika
grzes
Team
Team
Posty: 2633
Rejestracja: piątek, 18 marca 2005, 23:01

Re: Zmienne C-GEO w kodzie formularza?

Post autor: grzes »

Każdy obiekt formularza ma zdarzenia:
memo.png
memo.png (6.09 KiB) Przejrzano 608 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
pozdrawiam
grzes
Aoschin
____
____
Posty: 142
Rejestracja: wtorek, 27 sierpnia 2019, 12:35

Re: Zmienne C-GEO w kodzie formularza?

Post 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.
Pozdrawiam
Ao
Awatar użytkownika
grzes
Team
Team
Posty: 2633
Rejestracja: piątek, 18 marca 2005, 23:01

Re: Zmienne C-GEO w kodzie formularza?

Post 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
pozdrawiam
grzes
Aoschin
____
____
Posty: 142
Rejestracja: wtorek, 27 sierpnia 2019, 12:35

Re: Zmienne C-GEO w kodzie formularza?

Post 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.
Pozdrawiam
Ao
Awatar użytkownika
grzes
Team
Team
Posty: 2633
Rejestracja: piątek, 18 marca 2005, 23:01

Re: Zmienne C-GEO w kodzie formularza?

Post autor: grzes »

Aoschin pisze: poniedziałek, 21 czerwca 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)?
pozdrawiam
grzes
Aoschin
____
____
Posty: 142
Rejestracja: wtorek, 27 sierpnia 2019, 12:35

Re: Zmienne C-GEO w kodzie formularza?

Post 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 545 razy
Zrzut ekranu 2021-06-21 153214.jpg
Zrzut ekranu 2021-06-21 153214.jpg (113.55 KiB) Przejrzano 545 razy
W tym momencie to Starosta Kaliski jest tam wpisane, ale powinno zastąpić na TEST gdyby zadziałało
Pozdrawiam
Ao
Aoschin
____
____
Posty: 142
Rejestracja: wtorek, 27 sierpnia 2019, 12:35

Re: Zmienne C-GEO w kodzie formularza?

Post autor: Aoschin »

Okay, chyba jednak nie dla tego pola...
Dopiero jak wrzucilem to tutaj to coś zatrybiło.

Sprawdzę wieczorem.
Pozdrawiam
Ao
Aoschin
____
____
Posty: 142
Rejestracja: wtorek, 27 sierpnia 2019, 12:35

Re: Zmienne C-GEO w kodzie formularza?

Post autor: Aoschin »

Oczywiście działa. Dziękuję za pomoc! :)
Pozdrawiam
Ao
ODPOWIEDZ