Komponenty Delphi pomoc
Start › Komponenty Delphi › TWeatherScene

TWeatherScene

Profesjonalna, realistyczna animacja tła aplikacji pogodowej (nie cartoon): dzień/noc, miękkie chmury, deszcz, słońce, wiatr, gwiazdy. Dane tylko z TWeather — Scene nigdy nie woła serwera.

VCLFMXniewidoczny
▶ Zobacz na żywo – demo HTML

Opis

Komponent niewidoczny z palety „Maps” – osobna scenografia od middleware TWeather i od map. Rysuje profesjonalne, realistyczne tło (nie styl cartoon/anime): atmosferyczne niebo, miękkie wolumetryczne chmury, intensywność opadów, słońce/księżyc, kierunek wiatru, opcjonalne gwiazdy w nocy za panelami z info/wykresami/tabelami. Host: TPanel / TImage / kontrolka z IWeatherSceneHost. Dane: Weather := Weather1 (auto ApplyJSON na OnDataReady) albo ręczne ApplyJSON. Mapy mogą podpiąć scenę później; główne użycie = chrome samodzielnej aplikacji pogodowej.

Moduł: MapCommon.Weather.Scene · Klasa bazowa: TComponent · Platformy: VCL + FMX

TWeatherScene – podgląd poglądowy
TWeatherScene: niebieskie niebo, jasne realistyczne słońce; jedna duża etykieta Labels.Caption (np. Warszawa 25°C); SoftClouds. Powiązanie Weather ↔ Scene — Scene nie wykonuje GET na weather.imetroll.com. Podgląd poglądowy (nie zrzut z Delphi) – prawdziwa strona mapy komponentu w ramce imitującej formę.

Demo na żywo

Presety dzień/noc/deszcz + ApplyJSON z przykładowego JSON TWeather (Scene nie woła API).

Presety (domyślnie Clear: niebieskie niebo + jasne słońce) + jedna duża etykieta Labels.Caption (Warszawa 25°C); live ApplyJSON przez TWeather (key=).

▶ Realistyczna animacja tła (Scene)

Klik województwa → okno z Scene (Labels Style) + pola + HourStrip.

▶ Popup obszaru: Scene + dane

Funkcje

Scene nie ma ApiKey / Request — to wyłącznie TWeather.
Moduł RTL (bez VCL/FMX); paleta Maps; pakiet MapComponentsRT.
Host opcjonalny: bez hosta nadal dostajesz SceneJSON w OnStateChanged.

Właściwości

WłaściwośćOpis
WeatherTWeather — auto ApplyJSON na OnDataReady; reverse Weather.Scene.
HostTPanel / TImage / kontrolka z IWeatherSceneHost (opcjonalnie).
Labels.*Caption / ShowCaption / CaptionColor / CaptionFontSize — jedna duża etykieta na scenie (np. „Warszawa 25°C”).
AutoLinkComponentsTrue = szuka TWeather / hosta na formie.
Active, PresetwspAuto albo ręczny preset wizualny.
Options.*Animated, ShowStarsAtNight, IntensityScale, SoftClouds (realistyczne chmury).
IsDay, CloudCover, PrecipIntensityStan animacji (ustawiany też z JSON).
WindDirectionDeg, WindSpeedMsKierunek i siła wiatru (dryf chmur/deszczu).
SunVisible, StarsVisible, OvercastWypadkowe (przy Preset=wspAuto).

Zdarzenia

ZdarzenieOpis
OnStateChanged(SceneJSON)Po każdej zmianie stanu — payload dla hosta HTML/Canvas.

Metody

MetodaOpis
ApplyJSONParsuj middleware JSON (current/hourly) → stan. BEZ sieci.
ApplyFromWeatherApplyJSON(Weather.DataJSON).
SceneJSON / RefreshHost / ClearPayload, wypchnięcie do Host, reset.
DetectLinkedComponentsPonowne Weather / Host.

Przykłady

Weather ↔ Scene + Request tylko w TWeather

// TWeather = middleware (serwer); TWeatherScene = animacja tła (NIE woła serwera)
procedure TForm1.FormCreate(Sender: TObject);
begin
  Weather1.ApiKey := GetEnvironmentVariable('WEATHER_API_KEY');
  Weather1.ForecastKind := wfkCurrent;
  Weather1.Area.Kind := wakPoints;
  Weather1.Area.Points.Text := '52.23,21.01'; // Warszawa

  // Dwukierunkowe powiązanie (AutoLink też działa):
  Weather1.Scene := WeatherScene1;     // albo WeatherScene1.Weather := Weather1;
  WeatherScene1.Host := PanelSky;      // TPanel / TImage / WebView (IWeatherSceneHost)
  WeatherScene1.Options.ShowStarsAtNight := True;
  WeatherScene1.Options.Animated := True;
  WeatherScene1.OnStateChanged := SceneStateChanged;

  Weather1.OnDataReady := WeatherDataReady; // opcjonalnie — Scene i tak słucha OnDataReady
  Weather1.Request;                        // TYLKO TWeather woła weather.imetroll.com
end;

procedure TForm1.WeatherDataReady(Sender: TObject; const JSON: string);
begin
  // Ręczne podanie JSON (gdy nie używasz property Weather):
  // WeatherScene1.ApplyJSON(JSON);
  Memo1.Text := WeatherScene1.SceneJSON; // stan animacji dla hosta HTML/WebView
end;

ApplyJSON / preset bez serwera

// ApplyJSON bez property Weather — nadal BEZ wywołania serwera przez Scene
procedure TForm1.BtnApplyClick(Sender: TObject);
begin
  WeatherScene1.ApplyJSON(Weather1.DataJSON);
  // albo preset bez JSON:
  WeatherScene1.Preset := wspRain;       // wspClear / wspOvercast / wspNightClear …
  WeatherScene1.RefreshHost;             // SceneJSON → Host / OnStateChanged
end;

Host IWeatherSceneHost

// Host implementujący IWeatherSceneHost (np. TWebBrowser / własny panel)
type
  TSkyPanel = class(TPanel, IWeatherSceneHost)
  public
    procedure ApplyWeatherScene(const SceneJSON: string);
  end;

procedure TSkyPanel.ApplyWeatherScene(const SceneJSON: string);
begin
  // WebView: ExecuteScript('window.scene.apply(' + SceneJSON + ')');
  // albo własny Canvas / TImage — parsuj cloudCover, precipIntensity, isDay, …
end;

Pełna lista API

Generowana z deklaracji w kodzie (Source/*.pas): wszystkie opublikowane właściwości i zdarzenia TWeatherScene (także dziedziczone), właściwości publiczne i metody publiczne.

Właściwości opublikowane (15)

WłaściwośćTypDomyślnieOpis
WeatherTWeather
HostTComponent
AutoLinkComponentsBooleanTrueAutomatycznie łącz pierwszy dostawcę wyszukiwania / TMapAreas / TEditMap z formy
ActiveBooleanTrue
PresetTWeatherScenePresetwspAuto
OptionsTWeatherSceneOptions
LabelsTWeatherSceneLabels
IsDayBooleanTrue
CloudCoverDouble
PrecipIntensityDouble
WindDirectionDegDouble
WindSpeedMsDouble
SunVisibleBooleanTrue
StarsVisibleBooleanFalse
OvercastBooleanFalse

Zdarzenia (1)

ZdarzenieTypOpis
OnStateChangedTWeatherSceneStateEvent

Właściwości publiczne – tylko w kodzie (1)

WłaściwośćTypOpis
LastSceneJSONstring

Metody publiczne (6)

MetodaOpis
procedure ApplyJSON(const JSON: string)
procedure ApplyFromWeather
procedure ClearUsuwa własne pliki
procedure RefreshHost
function SceneJSON: string
procedure DetectLinkedComponentsWyszukuje na formie i łączy dostawcę / TMapAreas / TEditMap

Pełny opis wszystkich właściwości: dokumentacja komponentów map.

Zobacz też