AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Embedded WB Wordpress sticky Checken
Thema durchsuchen
Ansicht
Themen-Optionen

Embedded WB Wordpress sticky Checken

Ein Thema von ScharfeMietze · begonnen am 20. Dez 2015 · letzter Beitrag vom 27. Jan 2016
Antwort Antwort
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#1

Embedded WB Wordpress sticky Checken

  Alt 20. Dez 2015, 16:11
Hey
ich versuche auf einem Wordpress Blog
http://fs5.directupload.net/images/151220/x3sp9uo5.jpg

Per Browser das Sticky zu Checken.
Meine übliche Methode ein Feld zu finden, fruchtet nicht!

Delphi-Quellcode:
if embdwb1.go(Url,10000)then
  begin
   try
   for I := 0 to 10 do
     begin
       embdwb1.OleObject.document.forms.item(I).elements.item('sticky').Checked:= True;
       ShowMessage(IntToStr(I));
     end;
   except

   end;
  end;
Wer weiß Rat?

Gruß
SM
  Mit Zitat antworten Zitat
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#2

AW: Embedded WB Wordpress sticky Checken

  Alt 5. Jan 2016, 12:36
Keiner eine Idee für mich?
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: Embedded WB Wordpress sticky Checken

  Alt 5. Jan 2016, 13:17
Hallo,

habe keine Ahnung, ob Dir dieses "Fundstück" von meiner Festplatte da unter Umständen, eventuell, vielleicht helfen könnte
Delphi-Quellcode:
// This will do a click on the first element of the first <FORM>, where an
// element is either <INPUT>, <SELECT> or <TEXTAREA>.
// If there is more than one button, you can do something like:
function WBClickButton(wb : TWebBrowser; sTagName : String; sValue : String; sType : String = 'SUBMIT') : Boolean;
var
  ovElements : OleVariant;
  i : Integer;
  k : integer;
begin
  Result := False;
  for k := 0 to wb.OleObject.Document.forms.Length - 1 do begin
    ovElements := wb.OleObject.Document.forms.item(k).elements;
    for i := 0 to (ovElements.Length - 1) do begin
      if (AnsiUpperCase(ovElements.item(i).tagName) = sTagName)
      and (AnsiUpperCase(ovElements.item(i).type) = sType)
      and (ovElements.item(i).Value = sValue) then begin
        ovElements.item(i).Click;
        Result := True;
        break;
      end;
    end;
    if not Result then begin
      for i := 0 to (ovElements.Length - 1) do begin
        if (AnsiUpperCase(ovElements.item(i).type) = AnsiUpperCase(sType))
        and (ovElements.item(i).Value = sValue) then begin
          ovElements.item(i).Click;
          Result := True;
          break;
        end;
      end;
    end;
  end;
end;
So als Ansatz zum Weiterforschen?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Embedded WB Wordpress sticky Checken

  Alt 5. Jan 2016, 14:42
Das von IE/EmbeddedWB bereitgestellt DOM hat so seine Probleme wenn dieser dynamisch per JS zusammengebaut wird.

Vor allem wenn du hier nicht auf ein OnDocumentLoaded/Completet etc. wartest bekommst du u.U. noch den (nur halb) zusammengebauten DOM geliefert.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#5

AW: Embedded WB Wordpress sticky Checken

  Alt 11. Jan 2016, 09:35
Den Ansatz mit dem Fundstück hatte ich schon probiert. Es funktioniert leider nicht.


Auch der Ansatz mit Dom/Zeit. Ich habe es auf einen Separaten Button gelegt. Aber selbst nach nem Kaffe kein Erfolg.

Mal den Quelltext falls es wem hilft
Code:
</div><!-- .misc-pub-section -->

<div class="misc-pub-section misc-pub-visibility" id="visibility">
Sichtbarkeit: <span id="post-visibility-display">Öffentlich</span>
<a href="#visibility" class="edit-visibility hide-if-no-js"><span aria-hidden="true">Bearbeiten</span> <span class="screen-reader-text">Sichtbarkeit ändern</span></a>

<div id="post-visibility-select" class="hide-if-js">
<input type="hidden" name="hidden_post_password" id="hidden-post-password" value="" />
<input type="checkbox" style="display:none" name="hidden_post_sticky" id="hidden-post-sticky" value="sticky" />
<input type="hidden" name="hidden_post_visibility" id="hidden-post-visibility" value="public" />
<input type="radio" name="visibility" id="visibility-radio-public" value="public" checked='checked' /> <label for="visibility-radio-public" class="selectit">Öffentlich</label><br />
<span id="sticky-span"><input id="sticky" name="sticky" type="checkbox" value="sticky" /> <label for="sticky" class="selectit">Beitrag auf der Startseite halten</label><br /></span>
<input type="radio" name="visibility" id="visibility-radio-password" value="password" /> <label for="visibility-radio-password" class="selectit">Passwortgeschützt</label><br />
<span id="password-span"><label for="post_password">Passwort:</label> <input type="text" name="post_password" id="post_password" value="" maxlength="20" /><br /></span>
<input type="radio" name="visibility" id="visibility-radio-private" value="private" /> <label for="visibility-radio-private" class="selectit">Privat</label><br />

<p>
 <a href="#visibility" class="save-post-visibility hide-if-no-js button">OK</a>
 <a href="#visibility" class="cancel-post-visibility hide-if-no-js button-cancel">Abbrechen</a>
</p>
</div>

</div><!-- .misc-pub-section -->

Geändert von ScharfeMietze (11. Jan 2016 um 09:37 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: Embedded WB Wordpress sticky Checken

  Alt 11. Jan 2016, 13:48
Hallo,

weitere Fundstücke, mit denen es mit 'nem TWebBrowser geklappt hat:
Delphi-Quellcode:
function WbSetCheckBoxField(WebBrowser: TWebBrowser; FieldName: string; Checked: boolean): Boolean;
var
  Field: TPoint;
begin
  // Position des Felds holen
  if not WbFindField(WebBrowser, FieldName, Field) then
  begin
    Result := false; // Feld existiert nicht
    exit; // Ende
  end;
  try
    // CheckBox setzen
    WebBrowser.OleObject.Document.forms.Item(Field.x).Item(Field.y).Checked := Checked;
    Result := True;
  except
    Result := false;
    Exit;
  end;
end;
Delphi-Quellcode:
function WbFindField(WebBrowser: TWebBrowser; FieldName: string; var Field: TPoint): boolean;
var
  i, j: Integer;
  FormItem: Variant;
begin
  Result := False;
  //Hat das Dokument Forms? (Frames)
  if WebBrowser.OleObject.Document.all.tags('FORM').Length = 0 then
  begin
    Exit;
  end;
  //Bearbeite alle Frames
  for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do
  begin
    FormItem := WebBrowser.OleObject.Document.forms.Item(I);
    // Bearbeite alle Felder eines Frames
    for j := 0 to FormItem.Length - 1 do
    begin
      try
        // Feldname wurde gefunden
        // gebe ihn zurück und ende
        if FormItem.Item(j).Name = FieldName then
        begin
          Field.x := i; // Position speichern
          Field.Y := j;
          Result := True;
          exit;
        end;
      except
        Exit;
      end;
    end;
  end;
end;
Delphi-Quellcode:
  if WbSetCheckBoxField(WebBrowser1, 'sticky', true) then begin
    stb.SimpleText := Format('gechecked: %s',['sticky']);
  end else begin
    stb.SimpleText := Format('geht nicht :-(: %s',['sticky']);
  end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

AW: Embedded WB Wordpress sticky Checken

  Alt 11. Jan 2016, 13:51
Nur mal eine Frage, wenn WordPress eine API zur Steuerung anbietet, warum nimmt man nicht diese?
$2B or not $2B
  Mit Zitat antworten Zitat
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#8

AW: Embedded WB Wordpress sticky Checken

  Alt 27. Jan 2016, 22:48
Nachdem ich die diversen Varianten erfolglos Probierte,

PS: Danke für die Anregungen. Sie haben mir troz allem geholfen

Die Lösung war eigentilch simpel, aber ich sah wohl den Wald vor lauter Bäumen nicht.
embdwb1.OleObject.Document.getElementById('sticky').checked:= True;
Über die WP API kann man Beiträge erstellen?
Ohne das vorher Coden zu müssen mit den diversen Plugins?

Ich wüsste nicht wie das geht?!?

Da ich schlicht den Browser unsichtbar lasse, ist das schlicht und für mich die einfachste Lösung.

Falls es mit Api noch einfacher geht, hab ich gern ein offenes Ohr!!!

Gruß
SM
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz