Files
Patryk Gensch 198d9cf477 Finished automatically generated docs
Time to correct it by itself
2026-05-20 22:49:46 +02:00

167 lines
3.5 KiB
Markdown

# GROUP
Grupa zmiennych, do której można wysyłać zbiorowe wywołania metod. Każda metoda wywołana na obiekcie typu `GROUP` — która nie należy do własnego API grupy — jest delegowana do każdego elementu po kolei. Jeżeli dany element nie implementuje wywołanej metody, jest pomijany cicho (bez błędu).
Grupa utrzymuje wewnętrzny **marker** wskazujący jeden z elementów. Pozycja markera jest modyfikowana metodami [`NEXT`](#next), [`PREV`](#prev) i [`RESETMARKER`](#resetmarker). Markerem można posłużyć się do sekwencyjnego przechodzenia po elementach grupy.
Wartość zmiennej (`value`) typu `GROUP` to liczba elementów w grupie.
## Metody
### \[nazwa metody\]
```
void <methodName>(mixed param1, ..., mixed paramN)
```
Każda metoda spoza własnego API grupy jest delegowana do wszystkich elementów grupy z tymi samymi argumentami. Elementy, które nie implementują takiej metody, są pomijane.
**Przykłady**
```
GRPHIDE^HIDE();
GRPMOVE^SETPOSITION(VARX,VARY);
```
### ADD
```
void ADD(STRING varName1, [STRING varName2, ...])
```
Dodaje do grupy jeden lub więcej elementów po nazwie zmiennej. Próba ponownego dodania elementu już obecnego w grupie jest ignorowana.
**Parametry**
- `varName1, varName2, …` — kolejne nazwy zmiennych do dodania.
**Przykłady**
```
GRPHIDE^ADD("ANNREX");
GRPMOVE^ADD("ANNBODY1","ANNWAND1","ANNHEAD1");
GALL^ADD(["ANNPOLA_"+ICLONENO]);
```
### ADDCLONES
```
void ADDCLONES(STRING varName, INTEGER firstCloneIndex, INTEGER lastCloneIndex)
```
Dodaje do grupy zakres klonów zmiennej — od `firstCloneIndex` do `lastCloneIndex` włącznie. Klony są referencjami po nazwie wygenerowanej według wzorca silnika (sufiks indeksu).
**Parametry**
- `varName` — nazwa zmiennej bazowej.
- `firstCloneIndex` — indeks pierwszego klona.
- `lastCloneIndex` — indeks ostatniego klona.
**Przykłady**
```
GBKG^ADDCLONES("ANNPLANNAK",0,[I1-1]);
GTRASA^ADDCLONES("ANNSKRZYNIA",1,ITMPCLONENO);
GRPLANS^ADDCLONES("IMGPLAN1",1,10);
```
### GETSIZE
```
INTEGER GETSIZE()
```
Zwraca liczbę elementów w grupie.
**Zwraca**: [`INTEGER`](INTEGER.md) — rozmiar grupy.
**Przykłady**
```
GRPHIDE^GETSIZE();
```
### NEXT
```
mixed NEXT()
```
Przesuwa marker o jedno w prawo (do następnego elementu, ograniczony wartością ostatniego indeksu) i zwraca referencję do elementu wskazywanego po przesunięciu.
**Zwraca**: referencja do elementu pod nowym markerem.
**Przykłady**
```
GENEMIES^NEXT();
GBAZUK^NEXT();
```
### PREV
```
mixed PREV()
```
Przesuwa marker o jedno w lewo (do poprzedniego elementu, ograniczony zerem) i zwraca referencję do elementu pod nowym markerem.
**Zwraca**: referencja do elementu pod nowym markerem.
### REMOVE
```
void REMOVE(STRING varName)
```
Usuwa z grupy element o podanej nazwie. Jeżeli marker wskazywał na element poza nowym zakresem, zostaje przesunięty na ostatni dostępny element (lub `-1`, jeśli grupa stała się pusta).
**Parametry**
- `varName` — nazwa zmiennej do usunięcia.
**Przykłady**
```
GOBJ^REMOVE(S1);
GOBJ^REMOVE("ANNTNTR");
```
### REMOVEALL
```
void REMOVEALL()
```
Czyści grupę z wszystkich elementów i resetuje marker.
**Przykłady**
```
GRPHIDE^REMOVEALL();
```
### RESETMARKER
```
void RESETMARKER()
```
Ustawia marker na pierwszy element grupy (indeks `0`). Dla pustej grupy marker przyjmuje wartość `-1`.
**Przykłady**
```
GENEMIES^RESETMARKER();
```
## Sygnały
### ONINIT
Wywoływany w momencie inicjalizacji obiektu.
### ONSIGNAL
Wywoływany po otrzymaniu sygnału (zobacz [Zdarzenia i sygnały](../engine/events.md#onsignal)).